如何获取未运行的 Docker 容器的退出代码
php小编小新为您介绍如何获取未运行的Docker容器的退出代码。在使用Docker时,有时我们需要查看容器在退出时的退出代码以便进行故障排查或调试。然而,当容器未运行时,我们无法直接使用`docker logs`命令来获取退出代码。在本文中,我们将介绍一种方法来获取未运行的Docker容器的退出代码,以帮助您更好地处理容器相关问题。
问题内容
我需要获取处于非运行状态的容器的退出代码。 我知道容器没有运行,我从不同的来源获取此信息。
Docker的go SDK中有没有一种方法可以获取退出代码,而不必等待容器处于某种状态?
比如ContainerWait
的WaitResponse
提供了什么?
在我已经不存在容器的状态下简单地调用 ContainerWait
是一个好的解决方案吗?或者有更好的解决方案吗?
我对避免 ContainerWait
特别感兴趣,因为我可以看到该调用非常昂贵。
如果容器的状态已停止,则每个容器的调用 consting 大约需要 10 毫秒;如果容器处于重新启动状态,则调用 consting 需要 20 到 50 毫秒。
解决方法
退出代码位于 containerstate
结构。这嵌入在 响应中的
.state
字段中(*client).containerinspect()
例如:
func checkExitStatus(ctx context.Context, client *client.Client, containerID string) error {
inspection, err := client.ContainerInspect(ctx, containerID)
if err != nil {
return err
}
// Possible values are listed in the `ContainerState` docs; there do not
// seem to be named constants for these values.
if inspection.State.Status != "exited" {
return errors.New("container is not exited")
}
if inspection.State.ExitCode != 0 {
return fmt.Errorf("container exited with status %d", inspection.State.ExitCode)
}
return nil
}
以上就是如何获取未运行的 Docker 容器的退出代码的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341