Как проверить, работает ли 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, который проверит, работает ли мой демон docker. Если он запущен, ничего не делайте, но если это не так, запустите демон docker.

мой псевдокод-это что-то вроде этого. Я думаю о разборе вывода моего ps-ef, но я просто хотел бы знать, есть ли более эффективный способ сделать мой псевдокод.

if (docker не работает)

          run docker

конец

С. П. Я не эксперт по linux, и мне просто нужно сделать эту утилиту в своей собственной среде.

5 ответов


у вас есть утилита под названием pgrep почти на всех системах Linux.

Вы можете просто сделать:

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

замените команду "echo" командой запуска docker.


вы также можете просто проверить наличие /var/run / docker.пид


Я сделал небольшой скрипт (Mac Osx), чтобы убедиться, что Docker работает, проверив код выхода 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..

следующие работы на macOS и на Windows, если Git bash установлен. На macOS open /Applications/Docker.app запустил бы docker deamon. Однако не видел ничего подобного для Windows.

## 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
}

функция может выглядеть так:

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

Я создал скрипт для запуска, остановки, перезапуска mongodb-сервера. Вам нужно только изменить некоторый путь внутри скриптов, и я также работаю для вас: скрипт