为什么不能多次使用Docker CMD来运行多个服务?
我已经从Dockerfile建立了一个名为centos + ssh的基础映像。在centos +
ssh的Dockerfile中,我使用CMD运行ssh服务。
然后我想构建一个运行其他服务的图像,该服务名为rabbitmq,Dockerfile:
FROM centos+sshEXPOSE 22
EXPOSE 4149
CMD /opt/mq/sbin/rabbitmq-server start
要启动rabbitmq容器,请运行:
docker run -d -p 222:22 -p 4149:4149 rabbitmq
但是ssh服务不起作用,它感觉到Rabbitmq的Dockerfile CMD覆盖了centos的CMD。
- CMD如何在docker映像中工作?
- 如果要运行多个服务,该怎么办?使用主管?
回答:
即使CMD记录在Dockerfile中,它实际上也是运行时信息。就像EXPOSE一样,但是与RUN和ADD相反。通过这个,我的意思是您可以稍后在扩展的Dockerfile中覆盖它,或者在您正在运行的run命令中对其进行简单覆盖。在任何时候,只能有一个CMD。
如果您想运行多种服务,我确实会使用主管。您可以为每个服务创建一个主管配置文件,将它们添加到目录中,然后运行主管supervisord -c
/etc/supervisor以指向一个主管配置文件,该文件将加载所有服务,并且看起来像
[supervisord]nodaemon=true
[include]
files = /etc/supervisor/conf.d/*.conf
如果您想了解更多详细信息,我在这里写了一个关于此主题的博客:http :
//blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-
processes-supporting-image-遗产/
以上是 为什么不能多次使用Docker CMD来运行多个服务? 的全部内容, 来源链接: utcz.com/qa/431035.html