Dockerfile文件-CMD执行预期命令

CMD

 CMD 指令用3种用法:

  • CMD ["executable","param1","param2"] 像exec
  • CMD ["param1","param2"]
  • CMD command param1 param2 像shell

 Dockerfile.中只能有一个CMD指令。 如果你指定了多个,那么最后个CMD指令是生效的。

CMD指令的主要作用是提供默认的执行容器。这些默认值可以包括可执行文件,也可以省略可执行文件

当你使用shell或exec格式时,  CMD 会自动执行这个命令。

当你使用shell命令格式的时候,命令会在 /bin/sh -c:中执行:

FROM ubuntu

CMD echo "This is a test." | wc -

如果你想不通过shell来执行命令,你必须将命令压缩为JSON格式,CMD会自定转化为可以执行的命令去执行。

FROM ubuntu

CMD ["/usr/bin/wc","--help"]

如果你想在执行文件中重复执行一些指令 你可以使用 ENTRYPOINT和CMD来结合实现。

如果用户可能在执行 docker run 的时候使用额外的参数,那么额外的部分可以在CMD种重写。

注意:不要弄混了RUN和CMD,RUN会执行实际命令并提交执行结果,而CMD不会在image建立过程中执行,只是指定了image的预期命令