当前位置: 首页 > 面试题库 >

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

太叔豪
2023-03-14
问题内容

我已经从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。

  1. CMD如何在docker映像中工作?
  2. 如果要运行多个服务,该怎么办?使用主管?

问题答案:

即使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-遗产/



 类似资料:
  • 我已经从Dockerfile中构建了一个名为Centos+ssh的基本映像。在Centos+ssh的Dockerfile中,我使用CMD来运行ssh服务。 然后我想构建一个映像,运行其他名为rabbitmq的服务,DockerFile: 若要启动rabbitmq容器,请运行: 但是ssh服务不工作,它感测RabbitMQ的Dockerfile CMD覆盖Centos的CMD。 CMD如何在dock

  • 问题内容: 我试图了解此Python 2.7.5示例脚本的输出: 这产生输出: 2015-08-06 10:13 2015-08-06 10:13 2015-08-06 10:13 170339 170357 170345 170346 171232 170363 2015-08-06 10:13 2015-08-06 10:13 2015-08-06 10:13 我的问题是: A)为什么时间在开

  • 问题内容: 您好,欢迎大家,这是我的第一个问题,我希望这是一个好问题。我正在探索swing API,遇到一个突然出现的问题。我基本上问自己,我是否可以构建一个可以使用循环并像在控制台中那样显示多个JTextArea的程序,如下所示: 我希望将其打印在JFrame中,在此处输入代码,但似乎无法弄清楚该怎么做。我正在尝试使用JTextArea,但我确实认为这不是正确的方法。我尝试过标签,但是那根本不起

  • 问题内容: 我正在使用Swift开发iOS通用应用程序,使用自动布局功能,并且仅支持纵向模式。 我发现打过多次。而是在启动MyApp时仅被调用一次。 为什么要多次调用?是否会按顺序对每个(,等)进行约束? 任何信息将不胜感激。 问题答案: 仅被调用一次:需要加载视图时。 ,但是,每个运行循环都会在已存在或已对其调用的任何视图上调用一次- 这包括每当将子视图添加到视图,滚动,调整大小等时。

  • 我遇到了这个问题,我正在使用请求,然后它正在清除该请求。因此,当我在过滤器链中向前传递它时,它以空值的形式传递请求。 我能够通过以下类似的解决方案来解决这个问题: 如何在Spring'HandlerMachodArgumentResolver'中多次读取请求正文? 我的问题是,为什么不允许我们多次阅读该请求?