如何检查docker守护进程是否正在运行?

我正在尝试创build一个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 

我想创build一个bash shell脚本来检查我的docker守护进程是否正在运行。 如果它正在运行,则不要执行任何操作,但是如果没有,则会启动docker守护进程。

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

如果(docker不在运行)

  run docker 

结束

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

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

你可以做:

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

用您的docker starting命令replace`echo命令。

你也可以检查/var/run/docker.pid的存在

一个函数可能看起来如此:

 isRunning { `ps -ef | grep "[d]ocker" | awk {'print $2'}` } 

我创build了一个脚本来启动,停止,重新启动一个mongodb服务器。 你只需要改变脚本内的一些path,我也为你工作: 脚本