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

这是一个愚蠢的例子,通过CMD指令以shell的forms运行多个命令。 我宁愿使用execforms ,但我不知道如何连接指令。

壳的forms:

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

EXECforms:

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

有人可以用execforms提供等效的语法吗?

简短的回答是,你不能以exec的forms连接命令。

&&是shell的一个函数,用来将命令链接在一起。 实际上,当你在Dockerfile中使用这个语法时,实际上是利用了shell的function。

如果你想用execforms有多个命令,那么你可以使用execforms来调用shell,如下所示:

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