它们都用来标识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", ...]