我是码头工人的新手.我正在为docker编写一个简单的脚本.我需要检查docker是否正在运行.是否有命令检查容器名称
BMi*_*tch 67
如果您要查找特定容器,可以运行:
docker inspect -f '{{.State.Running}}' $container_name
Run Code Online (Sandbox Code Playgroud)
如果您想知道dockerd是否在本地计算机上运行并且您安装了systemd,则可以运行:
systemctl show --property ActiveState docker
Run Code Online (Sandbox Code Playgroud)
您还可以使用docker info或连接到docker,docker version如果守护程序不可用,它们将会出错.
ran*_*rol 20
我最终使用
docker info
Run Code Online (Sandbox Code Playgroud)
使用bash脚本检查docker引擎是否正在运行。
Her*_*cia 18
你可以使用以下方法检查码头状态: systemctl is-active docker
? ~ systemctl is-active docker
active
Run Code Online (Sandbox Code Playgroud)
你可以用它作为:
? ~ if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
is alive :)
? ~ sudo systemctl stop docker
? ~ if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
* empty response *
Run Code Online (Sandbox Code Playgroud)
Emi*_*ska 10
有时您不知道完整的容器名称,在这种情况下,这对我有用:
if docker ps | grep -q keyword
then
echo "Running!"
else
echo "Not running!"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
我们列出所有正在运行的容器进程(docker ps -a也会向我们展示没有运行的进程,但这不是我需要的),我们搜索一个特定的词(grep部分),如果我们没有找到至少一个名称包含我们的正在运行的容器,就会失败关键词。
小智 8
您还可以使用以下命令检查特定的 docker 容器是否正在运行:
docker inspect postgres | grep "Running"
Run Code Online (Sandbox Code Playgroud)
例如,此命令将检查我的 postgres 容器是否正在运行,并将输出返回为"Running": true
希望这可以帮助。
小智 6
对于OS X用户(Mojave 10.14.3)
这是我在Bash脚本中用来测试Docker是否正在运行的内容
# Check if docker is running
docker_state=$(docker info >/dev/null 2>&1)
if [[ $? -ne 0 ]]; then
echo "Docker does not seem to be running, run it first and retry"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
小智 6
在终端中运行此命令:
docker ps
Run Code Online (Sandbox Code Playgroud)
如果 docker 没有运行,您将收到以下消息:
来自守护进程的错误响应:拨打unix docker.raw.sock:连接:连接被拒绝
有关第一个问题的答案,请参阅此答案 - /sf/answers/4581349391/
对于您的第二个问题 - 您可以使用 like 命令docker ps --filter "name=<<<YOUR_CONTAINER_NAME>>>"来检查特定容器是否正在运行。
如果 Docker 和 Container 都在运行,那么您将获得如下输出:
$ docker ps --filter "name=nostalgic_stallman"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b6247364a03 busybox "top" 2 minutes ago Up 2 minutes nostalgic_stallman
Run Code Online (Sandbox Code Playgroud)
如果 Docker 未运行,您将收到一条错误消息,指出 docker daemon 未运行。
如果 Docker 正在运行但 Container 没有运行,那么您将不会在此命令的输出中获得容器名称。
任何docker命令(除外docker -v),例如docker ps
如果Docker正在运行,您将得到一些有效的响应,否则您将收到一条消息,其中包括“您的docker守护进程是否已启动并正在运行?”
您也可以检查任务管理器。
您可以使用此命令检查systemctl status docker它会显示 docker 的状态。如果你想开始,你可以使用systemctl start docker而不是systemctl你也可以分别尝试使用service,service docker status和service docker start。
跑步:
docker version
Run Code Online (Sandbox Code Playgroud)
如果 docker正在运行,您将看到:
Client: Docker Engine - Community
Version: ...
[omitted]
Server: Docker Engine - Community
Engine:
Version: ...
[omitted]
Run Code Online (Sandbox Code Playgroud)
如果 docker没有运行,您将看到:
Client: Docker Engine - Community
Version: ...
[omitted]
Error response from daemon: Bad response from Docker engine
Run Code Online (Sandbox Code Playgroud)
小智 5
容器状态:真/假
# docker inspect --format '{{json .State.Running}}' container-name
true
#
Run Code Online (Sandbox Code Playgroud)