Docker Container同时启动多服务
程序员文章站
2022-05-22 22:45:55
...
Docker Container同时启动多服务
转载请注明来自:http://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好、不推荐。
推荐阅读
-
docker compose 服务启动顺序控制的方法
-
Docker容器内应用服务自启动的方法示例
-
Docker如何同时启动多个服务
-
启动docker服务的时候报错:Failed to start docker.service: Unit docker.service is masked.
-
docker容器内服务随容器自启动
-
CentOS7 docker服务无法启动解决方案及实现步骤
-
Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
-
Docker配置redis哨兵模式的方法(多服务器上)
-
MySQL多实例安装开机自启动服务配置过程
-
详解docker中使用systemctl启动服务报错的解决办法