kubernetes中的command和args 与 dockerfile中的ENTRYPOINT和CMD的关系

2023-04-17 20:36:27 浏览数 (2)

command args

  • 如果指定了 containers.command ,Dockerfile 中的 ENTRYPOINT 会被覆盖且 CMD指令 会被忽略。
  • 如果指定了 containers.args,Dockerfile 中的 ENTRYPOINT 继续执行, CMD指令 被覆盖

ENTRYPOINT

CMD

command

args

finally

["/ep1"]

[“foo”, “bar”]

ep-1 foo bar

["/ep1"]

[“foo”, “bar”]

["/ep-2"]

ep-2

["/ep1"]

[“foo”, “bar”]

[“zoo”, “boo”]

ep-1 zoo boo

["/ep1"]

[“foo”, “bar”]

["/ep-2"]

[“zoo”, “boo”]

ep-2 zoo boo

CMD ENTRYPOINT

我们大概可以总结出下面几条规律:

  • 如果 ENTRYPOINT 使用了 shell 模式,CMD 指令会被忽略。
  • 如果 ENTRYPOINT 使用了 exec 模式,CMD 指定的内容被追加为 ENTRYPOINT 指定命令的参数。
  • 如果 ENTRYPOINT 使用了 exec 模式,CMD 也应该使用 exec 模式。

还有一点需要注意,如果使用 docker run --entrypoint 覆盖了 Dockerfile 中的 ENTRYPOINT , 同时 CMD 指令也会被忽略

真实的情况要远比这三条规律复杂,好在 docker 给出了官方的解释,如下图所示:

0 人点赞