Bash 如何检测docker是否以编程方式运行和底层守护进程是否完全启动?
我正在运行一个名家docker,然后在上面加载数据 我在bash脚本中包含了所有这些。 由于此命令按顺序运行,加载数据通常会失败,因为Virtuoso尚未完全启动 简单的解决办法就是增加一个延迟(睡眠),它就行了。不过这是一个有点肮脏的解决方案 我找到了这个命令Bash 如何检测docker是否以编程方式运行和底层守护进程是否完全启动?,bash,docker,Bash,Docker,我正在运行一个名家docker,然后在上面加载数据 我在bash脚本中包含了所有这些。 由于此命令按顺序运行,加载数据通常会失败,因为Virtuoso尚未完全启动 简单的解决办法就是增加一个延迟(睡眠),它就行了。不过这是一个有点肮脏的解决方案 我找到了这个命令 docker inspect -f {{.State.Running}} $CONTAINER_ID 但这只会告诉我们容器是否正在运行 是否有办法在加载数据之前检查docker上的守护进程是否已完全启动(在本例中为Virtuoso)?
docker inspect -f {{.State.Running}} $CONTAINER_ID
但这只会告诉我们容器是否正在运行
是否有办法在加载数据之前检查docker上的守护进程是否已完全启动(在本例中为Virtuoso)?您可以检查TCP端口是否已使用脚本打开:
container_ip=$(docker-inspect--format“{range.NetworkSettings.Networks}}{{{.IPAddress}}{{end}”)$container\u-ID
直到$(./wait-for-it.sh$container_ip:--超时=1)
做
echo“演奏家没有反应”;
完成;
一般过程是为应用程序定义健康检查,然后检查健康状态:
docker inspect --format '{{.State.Health.Status}}' $container_id
所需的输出是健康的
有关如何为图像定义健康检查的更多详细信息,请参阅
您为healthcheck定义的实际命令因容器中运行的应用程序而异。
以编程方式完全启动
-您需要与virtuoso连接并检查它是否可用。别无选择。您需要测试该服务。@KamilCuk这是我的想法,但仍然想确定。
docker inspect --format '{{.State.Health.Status}}' $container_id