1-联系
- 允许用户指定容器的默认执行的命令
2-区别
-
CMD有3种格式,Exec 格式是 CMD 的推荐格式
Exec 格式:CMD ["executable","param1","param2"] CMD ["param1","param2"] 为 ENTRYPOINT 提供额外的参数,此时 ENTRYPOINT 必须使用 Exec 格式。 Shell 格式:CMD command param1 param2
-
ENTRYPOINT 有两种格式
Exec 格式:ENTRYPOINT ["executable", "param1", "param2"] 这是 ENTRYPOINT 的推荐格式 Shell 格式:ENTRYPOINT command param1 param2 ## Exec 格式 ENTRYPOINT 的 Exec 格式用于设置要执行的命令及其参数,同时可通过 CMD 提供额外的参数。 ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。 比如下面的 Dockerfile 片段: ENTRYPOINT ["/bin/echo", "Hello"] CMD ["world"] 当容器通过 docker run -it [image] 启动时,输出为: Hello world 而如果通过 docker run -it [image] CloudMan 启动,则输出为: Hello CloudMan ## Shell 格式 ENTRYPOINT 的 Shell 格式会忽略任何 CMD 或 docker run 提供的参数。
-
如果 docker run 指定了其他命令,CMD 指定的默认命令将被忽略。
-
如果 Dockerfile 中有多个 CMD 指令,只有最后一个 CMD 有效。
-
ENTRYPOINT 看上去与 CMD 很像,它们都可以指定要执行的命令及其参数。不同的地方在于 ENTRYPOINT 不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。