如何检查 docker daemon 是否正在运行?

新手上路,请多包涵

我正在尝试创建一个 bash 实用程序脚本来检查 docker 守护程序是否在我的服务器中运行。除了运行这样的代码之外,还有更好的方法来检查 docker 守护程序是否在我的服务器中运行?

 ps -ef | grep docker
root      1250     1  0 13:28 ?        00:00:04 /usr/bin/dockerd --selinux-enabled
root      1598  1250  0 13:28 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc
root     10997 10916  0 19:47 pts/0    00:00:00 grep --color=auto docker

我想创建一个 bash shell 脚本来检查我的 docker 守护进程是否正在运行。如果它正在运行,则什么也不做,但如果没有,则启动 docker 守护进程。

我的伪代码是这样的。我正在考虑解析我的 ps -ef 的输出,但我只是想知道是否有更有效的方法来处理我的伪代码。

如果(码头工人没有运行)

           run docker

结尾

PS 我不是 linux 专家,我只需要在自己的环境中执行此实用程序。

原文由 Mark Estrada 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

在几乎所有的 Linux 系统上,您都有一个名为 pgrep 的实用程序。

你可以这样做:

 pgrep -f docker > /dev/null || echo "starting docker"

echo 命令替换为您的 docker 启动命令。

原文由 anubhava 发布,翻译遵循 CC BY-SA 4.0 许可协议

我制作了一个小脚本(Mac Osx),通过检查 docker stats 的退出代码来确保 Docker 正在运行。

 #!/bin/bash
#Open Docker, only if is not running
if (! docker stats --no-stream ); then
  # On Mac OS this would be the terminal command to launch Docker
  open /Applications/Docker.app
 #Wait until Docker daemon is running and has completed initialisation
while (! docker stats --no-stream ); do
  # Docker takes a few seconds to initialize
  echo "Waiting for Docker to launch..."
  sleep 1
done
fi

#Start the Container..

原文由 madsonic 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题