我写了一个非常简单的bash脚本,以快速检查我的容器仍然生成和启动正确,内部的应用程序响应请求。
有时docker运行失败,例如。因为我试图绑定容器的端口已经分配。但是当发生这种情况docker run的退出代码仍然是0,所以我不能使用退出代码。如何以编程方式检查容器是否正确启动?
我正在考虑的解决方案是:
但这些似乎有点过分和丑陋。我缺少一个更好的方法来检查docker运行是否成功?
正如AbelMuiño在评论中建议的,这可能已经在更新的Docker版本中修复(我目前运行0.9.1)。
但是,如果你暂时陷入像我这样的旧版本,我找到一个体面的解决方法来检查容器是否通过使用docker检查启动。
docker inspect返回一个JSON对象,其中包含有关容器的很多信息,特别是容器当前是否正在运行。 -f标志可以让您轻松提取所需的位:
docker inspect -f {{.State.Running}} $CONTAINER_ID
将返回true或false。
注意,你可能想要睡眠1(或更多)之间启动容器,并检查它是否。如果您的设置有问题,它可能会在实际退出之前显示为“运行”很短的时间。