当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式检测docker运行是否成功?

谢叶五
2023-03-14

我正在编写一个非常简单的bash脚本,以快速检查我的容器是否仍然正确构建和启动,以及里面的应用程序是否响应请求。

有时Docker run会失败,例如,因为我试图将容器绑定到的端口已经分配。但是当这种情况发生时,Docker run的退出代码仍然是0,所以我不能使用退出代码。如何以编程方式检查容器是否正确启动?

    null

共有1个答案

别永年
2023-03-14

正如Abel Muiño在评论中所建议的,这可能已经在最近的Docker版本中得到了修复(我目前运行的是0.9.1)。

但是,如果您像我一样暂时被旧版本所困扰,我确实找到了一个不错的变通方法来检查容器是否通过使用Docker Inspect启动。

Docker Inspect返回一个JSON对象,其中包含大量关于容器的信息,特别是容器当前是否正在运行。-f标志允许您轻松提取所需的位:

docker inspect -f {{.State.Running}} $CONTAINER_ID
docker inspect -f "{{.State.Running}}" $CONTAINER_ID

注意,您可能希望在启动容器和检查容器是否启动之间sleep1(或更长时间)。如果您的设置有问题,在实际退出之前,它可能会在很短的时间内显示为“运行”。

 类似资料:
  • 问题内容: 我正在编写一个非常简单的bash脚本,以快速检查我的容器仍在构建并正确启动,并且其中的应用程序能够响应请求。 有时会失败,例如因为我尝试将容器绑定到的端口已分配。但是当发生这种情况时,退出代码仍为0,因此我无法使用退出代码。如何以编程方式检查容器是否已正确启动? 我正在考虑的解决方案是: 解析输出中的错误 查看容器是否正在运行 但是这些似乎都有些过分和丑陋。我是否缺少更好的方法来检查是

  • 问题内容: 如何检查Glassfish DAS是否以编程方式运行,即使已将其部署在本地计算机还是远程计算机上? 使用Java6 问题答案: 我找到了一种方法来检查DAS是否已启动,而不是Linux脚本。通过这种方式,我的应用程序和DAS都在同一台计算机上还是每台安装在不同的计算机上都没有关系。 }

  • 我正试图为我的Android应用程序支持Android Q Dark主题,但我不知道如何根据我目前所在的主题导入不同的资产。 Im使用官方的DayNight主题来制作dark/light版本和drawables非常容易,只需指向XML,它将根据启用的内容从values或values-night中选择正确的值。

  • 问题内容: 在C语言中,如何以编程方式找出Linux / Ubuntu上是否已在运行某个进程,以避免该进程两次启动?我正在寻找类似于pidof的东西。 问题答案: 您可以进入这些条目并在文件中检查过程,也可以在链接上执行操作(以下使用第一种方法)。

  • 在这个答案中,docker是在其他脚本中执行的,所以它并不真正适用于我的用例。