基础图像有CMD时Docker CMD?

时间:2017-09-14 14:36:18

标签: docker

我有一个以:

开头的Dockerfile
FROM 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一起运行?

2 个答案:

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