【Docker】Dockerfile 之 ENTRYPOINT(四)
参考教程:https://docs.docker.com/engine/reference/builder/
环境
- virtual box 6.1
- centos 7.8
- docker 19.03
ENTRYPOINT 和 CMD 的交互
Both CMD and ENTRYPOINT instructions define what command gets executed when running a container. There are few rules that describe their co-operation.
CMD 和 ENTRYPOINT 指令均定义了运行容器时执行的命令。有少量的规则描述他们的合作。
-
Dockerfile should specify at least one of
CMDorENTRYPOINTcommands. -
Dockerfile 应该至少指定
CMD或ENTRYPOINT命令之一。 -
ENTRYPOINTshould be defined when using the container as an executable. -
使用容器作为可执行文件时,应定义
ENTRYPOINT。 -
CMDshould be used as a way of defining default arguments for anENTRYPOINTcommand or for executing an ad-hoc command in a container. -
应该使用
CMD作为定义ENTRYPOINT命令或在容器中执行命令的默认参数的方式。 -
CMDwill be overridden when running the container with alternative arguments. -
当使用其他参数运行容器时,
CMD将被覆盖。
The table below shows what command is executed for different ENTRYPOINT / CMD combinations:
下表显示了针对不同的 ENTRYPOINT/CMD 组合执行的命令:
| No ENTRYPOINT | ENTRYPOINT exec_entry p1_entry | ENTRYPOINT [“exec_entry”, “p1_entry”] | |
|---|---|---|---|
| No CMD | error, not allowed | /bin/sh -c exec_entry p1_entry | exec_entry p1_entry |
| CMD [“exec_cmd”, “p1_cmd”] | exec_cmd p1_cmd | /bin/sh -c exec_entry p1_entry | exec_entry p1_entry exec_cmd p1_cmd |
| CMD [“p1_cmd”, “p2_cmd”] | p1_cmd p2_cmd | /bin/sh -c exec_entry p1_entry | exec_entry p1_entry p1_cmd p2_cmd |
| CMD exec_cmd p1_cmd | /bin/sh -c exec_cmd p1_cmd | /bin/sh -c exec_entry p1_entry | exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd |
Note
If
CMDis defined from the base image, settingENTRYPOINTwill resetCMDto an empty value. In this scenario,CMDmust be defined in the current image to have a value.
注意
如果从基础镜像定义了
CMD,则设置ENTRYPOINT会将CMD重置为空值。在这种情况下,必须在当前镜像中定义CMD以具有值。
总结
介绍了 Dockerfile 中 ENTRYPOINT 指令和 CMD 指令的交互。

浙公网安备 33010602011771号