手机版

Dockerfile参考(8) – CMD设置运行容器时执行的命令

时间:2020-03-17 来源:互联网 编辑:宝哥软件园 浏览:

CMD指令有三种形式:

CMD [“executable”,”param1″,”param2″] [exec形式,这是首选形式] CMD [“param1″,”param2”] [作为ENTRYPIOINT的默认参数] CMD command param1 param2 [shell形式]

Dockerfile只能使用一个CMD指令。如果你使用了多个CMD那么Docker仅使用最后一个。
CMD的主要作用是为执行容器提供默认值。这些默认值可以包括一个可执行程序,或省略可执行程序(这种情况下需要指定一个ENTRYPOINT指令)。

注意:如果CMD用来提供ENTRYPOINT的默认参数,那么CMD和ENTRYPOINT指令应该使用JSON数组的格式。

注意:exec形式使用了JSON数组,意味着字符外使用双引号而不是单引号。

不论使用是的shell或exec格式,CMD指令设置了当运行镜像时要执行的命令。
如果使用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在构建期间不会执行任何命令,只是为镜像预先设置运行时容器时运行的命令或参数。

版权声明:Dockerfile参考(8) – CMD设置运行容器时执行的命令是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐