使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |