How to check if docker daemon is running?

2019-04-03 22:39发布

I am trying to create a bash utility script to check if a docker daemon is running in my server. Is there a better way of checking if the docker daemon is running in my server other than running a code like this?

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

I would like to create a bash shell script that will check if my docker daemon is running. If it is running then do nothing but if it is not then have the docker daemon started.

My pseudocode is something like this. I am thinking of parsing the output of my ps -ef but I just would like to know if there is a more efficient way of doing my pseudocode.

if(docker is not running)

          run docker

end

P.S. I am no linux expert and I just need to do this utility on my own environment.

5条回答
Bombasti
2楼-- · 2019-04-03 23:11

You have a utility called pgrep on almost all the Linux systems.

You can just do:

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

Replace the echo command with your docker starting command.

查看更多
Bombasti
3楼-- · 2019-04-03 23:12

I made a little Script (Mac Osx) to ensure Docker is running by checking the exit code of docker stats.

#!/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..
查看更多
ゆ 、 Hurt°
4楼-- · 2019-04-03 23:14

A function could looks so:

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

I created a script to start, stop, restart a mongodb-server. You only need to change some path inside the scripts, and i also works for you: Script

查看更多
迷人小祖宗
5楼-- · 2019-04-03 23:16

The following works on macOS and on Windows if git bash is installed. On macOS open /Applications/Docker.app would start the docker deamon. Haven't seen anything similar for Windows however.

## check docker is running at all
## based on https://stackoverflow.com/questions/22009364/is-there-a-try-catch-command-in-bash
{
  ## will throw an error if the docker daemon is not running and jump
  ## to the next code chunk     
  docker ps -q
} || {
  echo "Docker is not running. Please start docker on your computer"
  echo "When docker has finished starting up press [ENTER} to continue"
  read
}
查看更多
Fickle 薄情
6楼-- · 2019-04-03 23:17

You could also just check for the existence of /var/run/docker.pid

查看更多
登录 后发表回答