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才会生效。