验证容器运行状态

时间:2016-02-20 20:14:24

标签: bash docker

我有一个bash脚本,用于运行多个Docker容器。初始化时间因系统规格而异,因此有时这些不能按指定顺序启动。如何使用bash检测到容器正在运行,因此可以启动以下容器。容器需要先前启动的容器。

2 个答案:

答案 0 :(得分:1)

您可以使用docker ps查找所有正在运行的容器,并使用--filter=

按各种条件对其进行过滤

使用--name启动容器很方便 docker run

的文档

https://docs.docker.com/engine/reference/commandline/run/

提取

--name="" Assign a name to the container

然后您可以使用docker ps --filter name=

进行过滤

请参阅docker ps

的文档

https://docs.docker.com/engine/reference/commandline/ps/

一个例子

docker ps --filter "name=captvty"

您还可以使用图片,标签,祖先,ID ...进行过滤。

答案 1 :(得分:1)

我不建议使用bash。我理想的选择是Ansible。但由于你的要求是bash,所以你要做这样的事情(这不是确切的代码只是一个例子):

CONTAINER=my_container_id_or_name

RUNNING=$(docker inspect --format="{{ .State.Running }}" $CONTAINER)

while [ true ]; do
        if ["$RUNNING" == "true"]; then
                echo "$CONTAINER is running. Now start your other container"
                exit 0
        else
                echo "$CONTAINER is not running. Sleep for 1 second"
                sleep 1
        fi
done