- 容器的哲学是一个进程(服务)一个容器
- 但是一个容器多个进程(服务)是可以实现的,比如: 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的用法
容器内部运行多个进程(服务)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.