Golang Docker API - 尾部容器日志

时间:2018-04-06 09:46:06

标签: docker go

我使用Go并使用Docker的API来提取图像,然后创建并执行容器。特别是我正在使用docker-newman图片。我可以看到它实际上是在Kitematic中执行的,所以我知道一切都设置正确。但是,我的Go应用程序没有附加,然后拖尾正在输出的日志。

我已经看过this answer,它引用的是附加到图像和查看日志的方式。无论我尝试什么,我都无法让它发挥作用。

attachToContainerOptions := docker.AttachToContainerOptions{
    Container: container.ID,
    OutputStream: os.Stdout,
    ErrorStream:  os.Stderr,
    Logs: true,
    Stdout: true,
    Stderr: true,
}
if err := client.AttachToContainer(attachToContainerOptions); err != nil {
    panic(err)
} 

没有错误发生,但是这个immediatley会被传递而不会将任何内容传输到控制台。在docker cmd完成之前,如何将其传输到控制台?

1 个答案:

答案 0 :(得分:2)

Attach only works on a running container并且该图片的容器有效期是短暂的。相反,请尝试使用*Client.Logs来获取生成的日志。

以下是代码示例:

logsOptions := docker.LogsOptions{
    Container:    container.ID,
    OutputStream: os.Stdout,
    ErrorStream:  os.Stderr,
    Follow:       true,
    Stdout:       true,
    Stderr:       true,
}
if err := client.Logs(logsOptions); err != nil {
    panic(err)
}