加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用golang exec执行docker命令失败

发布时间:2020-12-16 09:27:44 所属栏目:大数据 来源:网络整理
导读:我正在使用cmd.go(见下文)执行docker命令但它失败了.我执行以下步骤来执行并获得以下错误. go buildsudo ./cmd 输出: docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m2014/10/16 14:32:12 exit status 1 另一方面直接运行为 sudo docker run
我正在使用cmd.go(见下文)执行docker命令但它失败了.我执行以下步骤来执行并获得以下错误.

go build
sudo ./cmd

输出:

docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m
2014/10/16 14:32:12 exit status 1

另一方面直接运行为

sudo docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m

得到a.out的正确输出.

Hello World

这是cmd.go的代码.我怎样才能让它发挥作用?谢谢!

package main

import (
        "fmt"
        "log"
        "os/exec"
        "strings"
)

func ExampleCmd_Output() {
        //out,err := exec.Command("date","--version").Output()   // This works
        //out,err := exec.Command("docker","--version").Output() // This works
        //out,err := exec.Command(cmd,"images").Output() // Even docker images command works!

        cmd := "docker"
        cmdArgs := []string{"run","-v","~/exp/a.out:/a.out","ubuntu:14.04","/a.out","-m","10m"}
        fmt.Println(cmd + " " + strings.Join(cmdArgs," "))
        out,cmdArgs...).Output()
        if err != nil {
                log.Fatal(err)
        }
        fmt.Printf("%s",out)
}

func main() {
        ExampleCmd_Output()
}

编辑:评论后,我尝试执行命令“docker images”.如果我用sudo运行可执行文件,它可以工作.也就是说,我现在在代码中使用以下行.

out,"images").Output()

在进行构建并运行“sudo ./cmd”之后,我得到了docker images命令的输出.但是,没有sudo,我仍然可以获得退出状态1.但是使用上面的docker run命令甚至使用sudo,我都没有得到输出.

解决方法

多亏了 Os Exec Sudo Command in Go,我现在能够做我想做的事.

func main() {
  cmdStr := "sudo docker run -v ~/exp/a.out:/a.out ubuntu:14.04 /a.out -m 10m"
  out,_ := exec.Command("/bin/sh","-c",cmdStr).Output()  
  fmt.Printf("%s",out)
}

输出:

Hello World

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读