閱讀837 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Docker Container同時啟動多服務


Docker Container同時啟動多服務

轉載請注明來自:https://blog.csdn.net/wsscy2004
昨天踩了個天坑,我有一個基本的鏡像centos6.5+ssh,是通過Dockerfile build的,利用CMD命令啟動ssh。

通過centos6.5+ssh鏡像,我想build一個rabbitmq鏡像,Dockerfile中CMD啟動rabbitmq服務。雖然我知道Dockerfile中的CMD隻能有一個,但沒想到創建另一個image,也會繼承FROM image的CMD.

利用docker的命令inspect可以看到,CMD已經被替換了。

"Cmd": [
   /usr/bin/supervisord"
],

下麵進入正題,如何同時啟動多個服務,主要有如下方式

supervisor

supervisor是linux下監控進程的工具,通過supervisor啟動所有服務。

創建Dockerfile:

# use this image to run multiple service
# add service in supervisord.conf

FROM centos6-ssh
MAINTAINER edwardsbean@gmail.com
RUN yum install -y supervisor
RUN mkdir -p /var/run/sshd
RUN mkdir -p /var/log/supervisor
ADD supervisord.conf /etc/supervisord.conf
# expose your port to host
EXPOSE 22 80
CMD ["/usr/bin/supervisord"]

創建supervisord.conf:

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

#add another service#[program:hello]#command=/bin/bash -c "/root/test.sh"

製作成image:

docker build -t supervisord .

以後就可以通過supervisord.conf添加服務了

CMD啟動腳本

通過將所有要啟動的服務封裝成一個腳本,利用CMD命令去啟動這個腳本。但是不如supervisord好、不推薦。



最後更新:2017-04-03 08:26:11

  上一篇:go linux shell 命令
  下一篇:go 動態規劃-uva-674