Docker CMD exec-form用于多个命令执行

时间:2017-10-17 18:58:17

标签: docker dockerfile

这是通过 shell-form 中的CMD指令运行多个命令的愚蠢示例。我更喜欢使用 exec-form ,但我不知道如何连接说明。

壳形式:

CMD mkdir -p ~/my/new/directory/ \
 && cd ~/my/new/directory \
 && touch new.file

EXEC形式:

CMD ["mkdir","-p","~/my/new/directory/"]
# What goes here?

有人可以在 exec-form 中提供等效语法吗?

1 个答案:

答案 0 :(得分:26)

简短的回答是,您不能将命令链接在 exec表单中。

&&是shell的一个函数,用于将命令链接在一起。实际上,当您在Dockerfile中使用此语法时,实际上是在利用shell功能。

如果你想使用 exec表单拥有多个命令,那么你已经使用 exec表单来调用shell,如下所示......

CMD ["sh","-c","mkdir -p ~/my/new/directory/ && cd ~/my/new/directory && touch new.file"]