【问题标题】:Run a docker container inside a Go server在 Go 服务器中运行一个 docker 容器
【发布时间】:2022-12-18 07:03:41
【问题描述】:

我正在尝试使用 exec.Command 在 Go 服务器中运行一个 docker 容器。

这是我要运行的代码:

entrypoint := "/bin/bash"
run := fmt.Sprintf("docker run -a stdout -a stderr --rm %s %s %s", env, image, args)
cmd := exec.Command(entrypoint, "-c", run)
if err := cmd.Start(); err != nil {
    return err
}

其中 env 是这样的:

-e KEY=VALUE

但是,我收到如下错误:

/bin/bash: docker run ... : No such file or directory

然后,我在 docker 命令的开头和结尾添加了双引号:

cmd := exec.Command(entrypoint, "-c", "\""+run+"\"")

这一次,我可以在我的 Zsh 终端中运行命令/bin/bash -c "docker run ..."。但是 Go 仍然会抛出相同的错误。

我应该怎么办?

【问题讨论】:

    标签: bash docker go


    【解决方案1】:

    您将 docker run 命令及其所有参数作为单个参数传递。相反,试试这个:

    cmd := exec.Command(entrypoint, "-c", "docker", "run", "-a", "stdout", "-a", "stderr", "--rm", env, image, args)
    

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 2019-07-20
      • 2017-10-10
      • 2021-08-12
      相关资源
      最近更新 更多