如何等待Docker容器启动并运行?
在容器内运行服务时,假设使用mongodb命令
docker run -d myimage
将立即退出,并返回容器ID。在我的CI脚本中,我在运行mongo容器之后立即运行客户端以测试mongodb连接。问题是:由于服务尚未启动,客户端无法连接。除了sleep
10在脚本中添加大字体外,我看不到任何等待容器启动并运行的选项。
Docker的命令wait
在这种情况下不起作用,因为该容器不存在。是docker的限制吗?
回答:
如在docker 1.12
的类似问题中所述
HEALTHCHECK
支持已根据docker /docker#23218在上游合并-
可考虑在启动该订单中的下一个容器之前确定容器何时健康
自docker
1.12rc3(2016-07-14)起可用
docker-
compose正在支持等待特定条件的功能。
它使用
libcompose
(因此我不必重建docker交互)并为此添加了一堆配置命令。在这里查看:https : //github.com/dansteen/control-compose
您可以像这样在Dockerfile中使用它:
HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1
官方文档:https :
//docs.docker.com/engine/reference/builder/#/healthcheck
以上是 如何等待Docker容器启动并运行? 的全部内容, 来源链接: utcz.com/qa/424689.html