我使用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完成之前,如何将其传输到控制台?
答案 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)
}