我有一个以:
开头的DockerfileFROM puppet/puppetserver
当我查看source container another时,extension:
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可用,因为我在RUN commands.sh
之前在同一个Dockerfile中使用CMD
。
从基础图像继承时,CMD
命令如何堆叠?
我的CMD
是不是作为普通的bash命令运行而是与基本图像的CMD
一起运行?
答案 0 :(得分:2)
您需要从父图像重置ENTRYPOINT
COPY start.sh /
ENTRYPOINT []
CMD /start.sh
答案 1 :(得分:1)
请参阅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才会生效。