cmd dockerfile 没有执行_Dockerfile参考(8) – CMD设置运行容器时执行的命令

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设置运行容器时执行的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值