我想知道这样做之间是否有幕后差异:
CMD echo 'Hello world'
和
CMD ['echo', 'Hello World']
我知道两者都会在控制台上打印出来,但是如果有区别,何时使用每个选项?
答案 0 :(得分:1)
在您的简单示例中并没有太大的区别,但是如果您需要诸如变量替换之类的shell功能,则会有区别。 $HOME
。
这是外壳形式。它将调用命令外壳程序:
CMD echo 'Hello world'
这是执行表单。它不调用命令外壳程序:
CMD ["/usr/bin/echo", "Hello World"]
exec表单被解析为JSON数组,这意味着您应该在单词周围使用双引号,而不是单引号,并且应该提供可执行文件的完整路径。 exec表单是CMD的首选格式。