web-dev-qa-db-fra.com

Comment vérifier si le démon docker est en cours d'exécution?

J'essaie de créer un script utilitaire bash pour vérifier si un démon docker est en cours d'exécution sur mon serveur . Existe-t-il un meilleur moyen de vérifier si le démon docker s'exécute sur mon serveur, à l'exception d'un code de ce type?

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

Je voudrais créer un script shell bash qui vérifiera si mon démon docker est en cours d'exécution. S'il est en cours d'exécution, ne faites rien mais s'il ne l'est pas, démarrez le démon docker.

Mon pseudocode est quelque chose comme ça. Je pense analyser la sortie de ps -ef mais je voudrais juste savoir s’il existe un moyen plus efficace d’exécuter mon pseudocode.

if (le menu fixe ne fonctionne pas)

          run docker

fin

P.S . Je ne suis pas un expert Linux et je dois juste faire cet utilitaire sur mon propre environnement.

14
Mark Estrada

Vous avez un utilitaire appelé pgrep sur presque tous les systèmes Linux.

Vous pouvez juste faire:

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

Remplacez la commande echo par votre commande de démarrage du menu fixe.

6
anubhava

J'ai fait un petit script (Mac Osx) pour m'assurer que Docker fonctionne en vérifiant le code de sortie de 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..
4
madsonic

Vous pouvez également vérifier l'existence de /var/run/docker.pid

2
Raman Sailopal

Ce qui suit fonctionne sur macOS et Windows si git bash est installé. Sur macOS, open /Applications/Docker.app lancera le deamon du menu fixe. Je n'ai toutefois rien vu de semblable pour 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
}
1
Vincent

Une fonction pourrait avoir l'air si:

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

J'ai créé un script pour démarrer, arrêter, redémarrer un serveur mongodb . Il vous suffit de changer un chemin dans les scripts, et je travaille aussi pour vous: Script

0