gpt4 book ai didi

docker - 为什么不能多次使用Docker CMD来运行多个服务?

转载 作者:行者123 更新时间:2023-12-02 18:35:40 26 4
gpt4 key购买 nike

我已经从Dockerfile建立了一个名为centos + ssh的基础镜像。在centos + ssh的Dockerfile中,我使用CMD运行ssh服务。

然后我想构建一个运行其他服务的图像,该服务名为rabbitmq,Dockerfile:

FROM centos+ssh
EXPOSE 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一样,但与运行并添加。通过这个,我的意思是您可以稍后在扩展的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-inheritance/

    关于docker - 为什么不能多次使用Docker CMD来运行多个服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946108/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com