Comment vérifier si le démon docker fonctionne?

j'essaye de créer un script utilitaire bash pour vérifier si un démon docker est en cours d'exécution sur mon serveur. Est-il une meilleure façon de vérifier si le démon docker est en cours d'exécution dans mon serveur autre que l'exécution d'un code comme celui-ci?

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 fonctionne. S'il fonctionne alors ne rien faire mais s'il n'est pas alors avoir le démon docker commencé.

Mon pseudo est quelque chose comme cela. Je pense d'analyser la sortie de mon ps-ef mais je voudrais juste savoir s'il y a une façon plus efficace de faire mon pseudocode.

if(menu fixe n'est pas en cours d'exécution)

          run docker

P. S. Je ne suis pas un expert linux et j'ai juste besoin de faire cet utilitaire sur mon propre environnement.

10
demandé sur Mark Estrada 2017-05-15 14:53:11

5 réponses

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

Tu peux faire:

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

remplacer la commande echo par la commande de démarrage de votre docker.

5
répondu anubhava 2017-05-15 12:00:11

Vous pouvez même vérifier l'existence de /var/run/docker.pid

1
répondu Raman Sailopal 2017-05-15 14:01:09

j'ai fait un petit Script (Mac Osx) pour m'assurer que Docker tourne 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..
1
répondu madsonic 2018-02-17 15:51:54

les travaux suivants sur macOS et sur Windows si git bash est installé. On macOS open /Applications/Docker.app lancerait le docker deamon. Je n'ai rien vu de semblable pour Windows cependant.

## 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
répondu Vincent 2018-07-09 17:59:58

Une fonction pourrait le regarde:

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

j'ai créé un script pour démarrer, arrêter, redémarrer un serveur mongodb. Vous avez seulement besoin de changer un chemin à l'intérieur des scripts, et je travaille aussi pour vous: Script

0
répondu FrankTheTank_12345 2017-05-15 11:58:03