当前位置: 首页 > 面试题库 >

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

唐麒
2023-03-14
问题内容

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

壳形式:

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

执行表格:

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

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


问题答案:

简短的答案是,您不能将 exec形式的 命令链接在一起。

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

如果你想有一个与多个命令 EXEC形式 ,那么你确实使用了 EXEC形式 来调用外壳如下…

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


 类似资料:
  • 问题内容: 我试图在一行中合并多个Linux命令以执行部署操作。例如 问题答案: 如果仅在上一个命令成功的情况下才执行每个命令,请使用运算符将它们组合: 如果其中一个命令失败,则将不执行其后的所有其他命令。 如果要执行所有命令而不管先前的命令是否失败,请使用分号将它们分开: 在您的情况下,我想您希望第一种情况下,下一条命令的执行取决于上一条命令的成功。 您还可以将所有命令放在脚本中,然后执行该脚本

  • 为什么/我的目标: 我有一个由pi组成的小型网状网络,每天大部分时间都在运行脚本。我想取消停机时间,但是代码有时会在连续循环3-4天后停止工作,(有时长达一周,代码才会出现错误并停止)。 每个节点上运行的脚本用“最后签入”字段更新mySQL数据库。 我希望用Java编写一个小型后台程序,它将在我的服务器上无限期运行,时不时地检查每个站点的“最后签入”,如果它注意到一个节点宕机,远程ssh进入该节点

  • outputs/exec 插件的运用也非常简单,如下所示,将 logstash 切割成的内容作为参数传递给命令。这样,在每个事件到达该插件的时候,都会触发这个命令的执行。 output { exec { command => "sendsms.pl \"%{message}\" -t %{user}" } } 需要注意的是。这种方式是每次都重新开始执行一次命令并退

  • 修改项目配置 'url_model' => 3, # cd 到项目www目录下 # php index.php index user b 1 以上指令表示控制器为Index的user方法,可以通过$_GET['b']获取参数值

  • 也可以直接执行一个SQL命令,即执行Insert, Update, Delete 等操作。此时不管数据库是何种类型,都可以使用 ` 和 ? 符号。 sql = "update `userinfo` set username=? where id=?" res, err := engine.Exec(sql, "xiaolun", 1)