Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何检测docker是否以编程方式运行和底层守护进程是否完全启动?_Bash_Docker - Fatal编程技术网

Bash 如何检测docker是否以编程方式运行和底层守护进程是否完全启动?

Bash 如何检测docker是否以编程方式运行和底层守护进程是否完全启动?,bash,docker,Bash,Docker,我正在运行一个名家docker,然后在上面加载数据 我在bash脚本中包含了所有这些。 由于此命令按顺序运行,加载数据通常会失败,因为Virtuoso尚未完全启动 简单的解决办法就是增加一个延迟(睡眠),它就行了。不过这是一个有点肮脏的解决方案 我找到了这个命令 docker inspect -f {{.State.Running}} $CONTAINER_ID 但这只会告诉我们容器是否正在运行 是否有办法在加载数据之前检查docker上的守护进程是否已完全启动(在本例中为Virtuoso)?

我正在运行一个名家docker,然后在上面加载数据

我在bash脚本中包含了所有这些。 由于此命令按顺序运行,加载数据通常会失败,因为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