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