当前位置: 首页 > 面试题库 >

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

裴星洲
2023-03-14
问题内容

我正在编写一个非常简单的bash脚本,以快速检查我的容器仍在构建并正确启动,并且其中的应用程序能够响应请求。

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

我正在考虑的解决方案是:

  • 解析输出中的错误
  • docker ps 查看容器是否正在运行

但是这些似乎都有些过分和丑陋。我是否缺少更好的方法来检查是否docker run成功?


问题答案:

正如AbelMuiñ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

返回truefalse

请注意,您可能想要sleep 1(或更多)在启动容器和检查容器是否可用之间。如果您的设置有问题,则可能在实际退出之前的很短时间内显示为“正在运行”。



 类似资料:
  • 我正在编写一个非常简单的bash脚本,以快速检查我的容器是否仍然正确构建和启动,以及里面的应用程序是否响应请求。 有时会失败,例如,因为我试图将容器绑定到的端口已经分配。但是当这种情况发生时,的退出代码仍然是0,所以我不能使用退出代码。如何以编程方式检查容器是否正确启动? null

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

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

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

  • 我能够从照片中捕捉颜色的RGB值,但我希望能够通过编程检测该颜色是红色、橙色、黄色、绿色、蓝色、紫色、棕褐色还是白色或黑色。 所以我需要指定返回的RGB范围,例如,红色的值。。。或者蓝色。。。等等我现在有类似的东西,但它不包括所有可能的RGB品种。 红色 R=255,克 R=255,G=0,B 橙色 R=255,克 R=240,G=255,B=0 等等 有人知道如何获取任何RGB值,并检测它是红色