- 容器的哲學是一個進程(服務)一個容器
- 但是一個容器多個進程(服務)是可以實現的,比如: ELK的容器,就把3個進程塞在了一個容器裏
- 常見的實現方式
- 參考: 如何科學的在Docker Container中運行多個服務
- 參考未提及的:
- 使用supervisor在Docker同時啓動多個服務
- PouchContainer
- 補充用腳本啓動的一種方式,這裏不必用到while true; do sleep 10;done這樣
#!/bin/bash # 一共2個進程,其中一個進程後臺,另一個進程作爲前臺進程撐起整個容器 nohup /skygram/http8001 & /skygram/http8002
- 對應的Dockerfile
FROM ubuntu:18.04 RUN groupadd -r -g 999 skygram && useradd -r -g skygram -u 999 skygram RUN mkdir /skygram RUN chown -R skygram:skygram /skygram COPY sources.list /etc/apt/sources.list RUN set -x \ && apt update \ && apt install -y gosu \ && apt clean \ && rm -rf /var/lib/apt/lists/* \ && gosu nobody true \ && set +x COPY http8001 /skygram COPY http8002 /skygram RUN chown -R skygram:skygram /skygram/http8001 RUN chown -R skygram:skygram /skygram/http8002 COPY start_gosu.sh /skygram RUN chown -R skygram:skygram /skygram/start_gosu.sh ENTRYPOINT ["gosu", "skygram", "/skygram/start_gosu.sh"] ```
- 對應的Dockerfile
- 參考: 如何科學的在Docker Container中運行多個服務
- 比較好的方式
使用ELK裏使用的baseimage鏡像,理由在2.1的那篇文章有講到 - 需要深入瞭解的
- init進程: https://www.jianshu.com/p/43e7faf8e1a5
- baseimage的用法
容器內部運行多個進程(服務)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.