我正在编写一个非常简单的bash脚本,以快速检查我的容器是否仍然正确构建和启动,以及里面的应用程序是否响应请求。
有时Docker run
会失败,例如,因为我试图将容器绑定到的端口已经分配。但是当这种情况发生时,Docker run
的退出代码仍然是0,所以我不能使用退出代码。如何以编程方式检查容器是否正确启动?
正如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是在其他脚本中执行的,所以它并不真正适用于我的用例。