CMD
提供容器启动的默认行为,运行不指定运行的命令及参数,会默认执行CMD中的。
例如hello镜像的Dockerfile中有 CMD ["echo","'hello world'"]
- 执行
docker run hello
,输出hello world
- 执行
docker run hello /bin/sh -c "shit"
则会覆盖CMD
中所有的东西,输出shit
ENTRYPOINT
让容器可以当成一个普通的可执行命令一样使用。
例如echo镜像的Dockerfile中有ENTRYPOINT ["/bin/echo"]
- 执行
docker run echo "hello world"
,输出hello world
若同时CMD
也存在,比如: CMD ["'hello world'"]
,那么CMD
中的值就是ENTRYPOINT
的默认参数。
- 执行
docker run echo
, 即不加参数,也会输出hello world