如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 有效。

是的,如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 指令会生效,即它会成为容器启动时执行的默认命令。这是因为每个 Dockerfile 只允许有一个 CMD 指令,如果在 Dockerfile 中出现多个 CMD,只有最后一个会被 Docker 解释并生效。

下面是一个示例 Dockerfile,其中定义了多个 CMD

FROM ubuntu
CMD echo "Hello, World!"
CMD echo "Goodbye, World!"

在这个示例中,第二个 CMD 指令会覆盖第一个 CMD 指令,只有 echo "Goodbye, World!" 会在容器启动时执行,而 echo "Hello, World!" 将被忽略。

因此,尽管容器仍然可以通过传递参数来覆盖 CMD,但为了避免混淆,最好在 Dockerfile 中只使用一个 CMD 指令。如果确实需要在 Dockerfile 中定义多个命令,请考虑使用 RUN 在同一行或多行上运行多个命令,而不是使用多个 CMD 指令。

posted @ 2023-04-23 11:58  flytoyou  阅读(1188)  评论(0)    收藏  举报