当前位置: 首页 > 知识库问答 >
问题:

为什么我不能多次使用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. 如果我想运行多个服务,如何运行?使用supervisor?

共有1个答案

姜志行
2023-03-14

您是对的,第二个Dockerfile将覆盖第一个Dockerfile的cmd命令。Docker将始终运行一个命令,而不是更多。因此,在Dockerfile的末尾,可以指定一个要运行的命令。不是更多。

但您可以在一行中执行这两个命令:

FROM centos+ssh
EXPOSE 22
EXPOSE 4149
CMD service sshd start && /opt/mq/sbin/rabbitmq-server start

为了使Dockerfile更加整洁,您还可以将CMD命令放到一个额外的文件中:

FROM centos+ssh
EXPOSE 22
EXPOSE 4149
CMD sh /home/centos/all_your_commands.sh
service sshd start &
/opt/mq/sbin/rabbitmq-server start
 类似资料:
  • 问题内容: 我已经从Dockerfile建立了一个名为centos + ssh的基础映像。在centos + ssh的Dockerfile中,我使用CMD运行ssh服务。 然后我想构建一个运行其他服务的图像,该服务名为rabbitmq,Dockerfile: 要启动rabbitmq容器,请运行: 但是ssh服务不起作用,它感觉到Rabbitmq的Dockerfile CMD覆盖了centos的CM

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

  • 问题内容: 我试图了解此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)为什么时间在开

  • 问题内容: 3年前,我可以在express.js中进行多个res.send。 甚至编写setTimeout来显示实时输出。 现在它将抛出: 我知道nodejs和express已更新。为什么现在不能这样做?还有其他想法吗? 找到了解决方案,但API参考http://expressjs.com/4x/api.html中没有“ res.write” … :S 问题答案: 也许您需要: 隐式调用,后跟。如

  • 问题内容: 当将多个列与以下数据框一起使用时,Pandas Apply函数存在一些问题 和以下功能 当我尝试使用以下功能时: 我收到错误消息: 我不明白此消息,我正确定义了名称。 非常感谢你在此问题上的任何帮助 更新资料 谢谢你的帮助。我确实在代码中犯了一些语法错误,索引应该放在’‘。但是,使用更复杂的功能仍然会遇到相同的问题,例如: 问题答案: 似乎你忘记了你的字符串。 在我看来,顺便说一句,以

  • 我的老师给了我这个 在一个n边正多边形中,所有边都有相同的长度,所有角都有相同的度数。设计一个名为正多边形的类,它包含:一个名为n的私有int数据栏,它定义了多边形中默认值为3的边的数量。一个名为side的私有双数据栏,它存储了默认值为1的边的长度。一个名为X的私有双数据栏,它定义了默认值为0的多边形中心的x坐标。一个名为Y的私有双数据栏,它定义了默认值为0的多边形中心的y坐标。创建具有指定边数、