1

说我有这个:

FROM oresoftware/lmx-broker:0.2.1

ENTRYPOINT ['/docker-entrypoint.sh']

如果我不使用CMDCMD默认为基础图像中设置的值?我会在基础镜像中使用ENTRYPOINT覆盖吗?ENTRYPOINT我会在基础镜像中使用CMD覆盖吗?CMD

基本上我的目标是覆盖基本图像的入口点,但能够发现/重用 CMD,这样我的docker-entrypoint.sh文件将如下所示:

#!/bin/sh

"$@" | capture-stdio

其中 "$@" 将默认为基础映像中的 CMD。

4

2 回答 2

2

从文档:

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

因此,要回答您的问题,这是行不通的。 阅读更多

祝你好运。

于 2019-09-26T17:43:41.787 回答
0

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

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

在 Dockerfile 中定义入口点后,传递给的任何内容都CMD将被视为入口点的参数。

要查看基本映像的CMD和,只需运行entrypoint

docker inspect oresoftware/lmx-broker:0.2.1

或查看基础镜像的入口点

docker run --rm oresoftware/lmx-broker:0.2.1 bash -c "cat path_to_entrypoint"

于 2019-09-26T17:38:15.403 回答