我正在使用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, err := exec.Command(cmd, cmdArgs...).Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", out)
}
func main() {
ExampleCmd_Output()
}
编辑:在收到评论后,我尝试执行命令“docker images”。如果我使用sudo以管理员身份运行可执行文件,则可以正常工作。因此,现在我在代码中使用以下行。
out, err := exec.Command(cmd, "images").Output()
在执行go build并运行"sudo ./cmd"之后,我得到了docker images命令的输出。但是,如果没有sudo,我仍然会得到退出状态1。但是,使用上面的docker run命令即使有sudo,我也不会得到输出。
docker images
是否会产生预期的结果? - Thomasleveil