首页 > 解决方案 > 如何检测 docker run 和底层守护程序是否以编程方式完全启动?

问题描述

我正在运行 Virtuoso docker 并在其上加载数据。

我在 bash 脚本中拥有所有这些。由于此命令按顺序运行,加载数据通常会失败,因为 Virtuoso 尚未完全启动。

简单的解决方案就是添加一个延迟(睡眠),它可以工作。虽然这是一个有点肮脏的解决方案。

我找到了这个命令

docker inspect -f {{.State.Running}} $CONTAINER_ID

但这仅说明容器是否正在运行。

有没有办法在加载数据之前检查 docker 上的守护进程是否完全启动(在本例中为 Virtuoso)?

标签: bashdocker

解决方案


通用过程是为您的应用程序定义一个健康检查,然后检查该健康状态:

docker inspect --format '{{.State.Health.Status}}' $container_id

所需的输出是healthy

有关如何为映像定义健康检查的更多详细信息,请参阅https://docs.docker.com/engine/reference/builder/#healthcheck

您为运行状况检查定义的实际命令会因容器内运行的应用程序而异。


推荐阅读