Docker CMD什么时候基本映像有CMD?

我有一个Dockerfile开始于:

FROM puppet/puppetserver 

当我查看源容器时,它是从另一个 源构build的:

 FROM puppet/puppetserver-standalone:5.0.0 

第二个包含一个CMD命令:

 ENTRYPOINT ["dumb-init", "/docker-entrypoint.sh"] CMD ["foreground" ] 

在我自己的容器中,我结束了:

 COPY start.sh / CMD /start.sh 

CMD运行但意外的结果:

puppetserver:'/ bin / sh'不是puppetserver命令。 参见“puppetserver –help”。

我知道我有bash可用,因为我在CMD之前在同一个Dockerfile中使用了RUN commands.sh

从基础映像inheritance时, CMD命令如何堆叠?

我的CMD不是作为普通的bash命令运行,而是与基础图像的CMD一起运行?

您需要重置父图像的入口点

 COPY start.sh / ENTRYPOINT [] CMD /start.sh 

https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact

应该使用CMD作为为ENTRYPOINT命令定义默认参数或在容器中执行ad-hoc命令的一种方法。

https://docs.docker.com/engine/reference/builder/#cmd

Dockerfile中只能有一个CMD指令。 如果列出多个CMD,则只有最后一个CMD才会生效。