脚本如何检查特定 Docker 容器是否为 运行?
How can a script check if a particular Docker container is running?
我想要一个 shell 脚本来检查特定容器是否 运行。
例如,如果容器尚未启动,我可能想启动它 运行,或者查询一些关于它的信息,例如公开了哪些端口。
docker ps
命令使用 -f
/ --filter
选项来定位所需的容器。要测试容器的名称是否为 运行,我们可以尝试
$ docker ps --filter "name=myapp" --filter "status=running"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91959ed76e77 foo/barbaz:latest "/init" 10 minutes ago Up 10 minutes myapp
如果我们只想要容器 ID,因为我们要把它传递给另一个命令,比如 docker exec
,我们可以使用 -q
/ --quiet
:
$ docker ps --filter "name=myapp" --filter "status=running" --quiet
91959ed76e77
只检查是否为运行,我们可以看到输出是否为non-empty:
if [ -n "$(docker ps -f "name=myapp" -f "status=running" -q )" ]; then
echo "the container is running!"
fi
或者,如果我们需要有关它的其他信息,--format
:
$ docker ps -f "name=myapp" -f "status=running" --format "{{.Image}}"
foo/barbaz:latest
我想要一个 shell 脚本来检查特定容器是否 运行。
例如,如果容器尚未启动,我可能想启动它 运行,或者查询一些关于它的信息,例如公开了哪些端口。
docker ps
命令使用 -f
/ --filter
选项来定位所需的容器。要测试容器的名称是否为 运行,我们可以尝试
$ docker ps --filter "name=myapp" --filter "status=running"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
91959ed76e77 foo/barbaz:latest "/init" 10 minutes ago Up 10 minutes myapp
如果我们只想要容器 ID,因为我们要把它传递给另一个命令,比如 docker exec
,我们可以使用 -q
/ --quiet
:
$ docker ps --filter "name=myapp" --filter "status=running" --quiet
91959ed76e77
只检查是否为运行,我们可以看到输出是否为non-empty:
if [ -n "$(docker ps -f "name=myapp" -f "status=running" -q )" ]; then
echo "the container is running!"
fi
或者,如果我们需要有关它的其他信息,--format
:
$ docker ps -f "name=myapp" -f "status=running" --format "{{.Image}}"
foo/barbaz:latest