Docker CMD vs ENTRYPOINT

它们都用来标识image的可执行文件

很多image将自己的CMD设置为/bin/sh 或者 /bin/bash,因此在运行image时就会进入shell的交互界面(当然docker run时需要加上-it)

在docker run时,只需要在命令后直接添加命令,就可以覆写CMD的默认命令

但是如果使用ENTRYPOINT,则需要用 --entrypoint 覆写命令

格式

shell形式:
CMD command param1 param2

将在shell环境中运行,可以使用环境变量。但command的pid不会是1,因为pid为1的进程是shell,因此Ctrl + C 不会有反应。

exec形式:
CMD ["command", "param1", "param2"]

直接运行命令,command的pid会为1。如果希望用到环境变量,则可以执行
CMD ["sh", "-c", "command", "param1", ...]

你可能感兴趣的:(Docker CMD vs ENTRYPOINT)