如何等待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

回到顶部