dockerfile中的CMD echo'Hello world'和CMD [“ echo”,'Hello world']之间的区别?

时间:2019-01-29 19:22:10

标签: docker dockerfile

我想知道这样做之间是否有幕后差异:

CMD echo 'Hello world'

CMD ['echo', 'Hello World']

我知道两者都会在控制台上打印出来,但是如果有区别,何时使用每个选项?

1 个答案:

答案 0 :(得分:1)

在您的简单示例中并没有太大的区别,但是如果您需要诸如变量替换之类的shell功能,则会有区别。 $HOME

这是外壳形式。它将调用命令外壳程序:

CMD echo 'Hello world'

这是执行表单。它不调用命令外壳程序:

CMD ["/usr/bin/echo", "Hello World"]

exec表单被解析为JSON数组,这意味着您应该在单词周围使用双引号,而不是单引号,并且应该提供可执行文件的完整路径。 exec表单是CMD的首选格式。