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