Docker中CMD与ENTRYPOINT的简明理解

Wed Sep 6, 2017

300 Words|Read in about 1 Min
Tags: docker  

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

See Also

Wed Sep 6, 2017

300 Words|Read in about 1 Min
Tags: docker