登录
首页 >  Golang >  Go问答

Docker Go lang SDK 无法获取 ContainerExecCreate 返回值

来源:stackoverflow

时间:2024-03-15 19:51:18 493浏览 收藏

使用 Docker Go 语言 SDK 尝试执行容器中的命令时,无法获取命令返回值。尽管已正确设置了命令执行配置,但 ContainerExecCreate 方法没有返回任何结果。经过排查发现,需要明确指定附加标准输出和标准错误输出才能获取命令执行结果。修改命令执行配置后,即可成功获取容器上的工作目录。

问题内容

我正在尝试使用 docker go lang sdk 执行命令(假设“pwd”),我希望它返回容器上的工作目录。但它什么也没有返回。我不确定问题是什么。

rst, err := cli.ContainerExecCreate(context.Background(), "0df7c1d9d185b1da627efb983886a12fefc32120d035b34e97c3ad13da6dd9cc", types.ExecConfig{Cmd: []string{"pwd"}})
if err != nil {
    panic(err)
}

//res, err := cli.ContainerExecInspect(context.Background(), rst.ID)
//print(res.ExitCode)

response, err := cli.ContainerExecAttach(context.Background(), rst.ID, types.ExecStartCheck{})
if err != nil {
    panic(err)
}
defer response.Close()

data, _ := ioutil.ReadAll(response.Reader)
fmt.Println(string(data))


GOROOT=/usr/local/Cellar/go/1.13.5/libexec #gosetup
GOPATH=/Users/pt/go #gosetup
/usr/local/Cellar/go/1.13.5/libexec/bin/go build -o /private/var/folders/yp/hh3_03d541x0r6t7_zwqqhqr0000gn/T/___go_build_main_go /Users/pt/go/src/awesomeProject/main.go #gosetup
/private/var/folders/yp/hh3_03d541x0r6t7_zwqqhqr0000gn/T/___go_build_main_go #gosetup

### It does not print the working directory ###
Process finished with exit code 0

解决方案


这可以通过以下配置解决:

optionsCreate := types.ExecConfig{
    AttachStdout: true,
    AttachStderr: true,
    Cmd:          []string{"ls", "-a"},
}

本篇关于《Docker Go lang SDK 无法获取 ContainerExecCreate 返回值》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>