如何为基本映像覆盖/发现CMD / ENTRYPOINT

时间:2019-09-26 17:20:53

标签: docker docker-build docker-run docker-entrypoint

说我有这个:

FROM oresoftware/lmx-broker:0.2.1

ENTRYPOINT ['/docker-entrypoint.sh']

如果我不使用CMDCMD会默认使用基本图像中设置的值吗?我使用ENTRYPOINT会否覆盖基本映像中的ENTRYPOINT?我使用CMD会否覆盖基本映像中的CMD

基本上,我的目标是重写基本映像的ENTRYPOINT,但能够发现/重用CMD,这样我的docker-entrypoint.sh文件将如下所示:

#!/bin/sh

"$@" | capture-stdio

其中“ $ @”在基本图片中默认为CMD。

2 个答案:

答案 0 :(得分:1)

从文档中

  

注意:如果从基本映像定义了CMD,则设置ENTRYPOINT会将CMD重置为空值。
  在这种情况下,必须在当前图像中定义CMD以具有值。

因此,回答您的问题将不起作用。 To read more

祝你好运。

答案 1 :(得分:0)

如果您在Dockerfile中使用ENTRYPOINT ['/docker-entrypoint.sh'],它将覆盖入口点。

简而言之,如果您使用基本映像中定义的任何内容并在映像中重新定义,则它将覆盖其CMDentrypoint或任何其他配置,例如{{1} }等。

一旦您在Dockerfile中定义了入口点,传递给ENV的任何东西都将被视为入口点的参数。

只需运行即可查看基本图像的CMDCMD

entrypoint

或查看基本图像的入口点

docker inspect oresoftware/lmx-broker:0.2.1