webentwicklung-frage-antwort-db.com.de

Wie kann man überprüfen, ob der Docker-Daemon läuft?

Ich versuche, ein Bash-Utility-Skript zu erstellen, um zu überprüfen, ob ein Docker-Daemon auf meinem Server ausgeführt wird .. Gibt es eine bessere Möglichkeit, zu überprüfen, ob der Docker-Daemon auf meinem Server ausgeführt wird und nicht einen solchen Code ausführt?

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

Ich möchte ein bash-Shell-Skript erstellen, das überprüft, ob mein Docker-Daemon läuft. Wenn es läuft, dann nichts tun, wenn nicht, dann haben Sie den Docker-Daemon gestartet.

Mein Pseudocode ist so etwas. Ich denke daran, die Ausgabe meines ps -ef zu analysieren, aber ich möchte nur wissen, ob es einen effizienteren Weg gibt, meinen Pseudocode auszuführen.

wenn (Docker läuft nicht)

          run docker

ende

PS: Ich bin kein Linux-Experte und muss dieses Dienstprogramm nur in meiner eigenen Umgebung ausführen.

14
Mark Estrada

Sie haben auf fast allen Linux-Systemen ein Dienstprogramm namens pgrep.

Sie können einfach tun:

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

Ersetzen Sie den Befehl echo durch den Startbefehl Ihres Dockers.

6
anubhava

Ich habe ein kleines Skript (Mac Osx) erstellt, um sicherzustellen, dass Docker ausgeführt wird, indem der Exit-Code von docker stats überprüft wird. 

#!/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

Sie können auch einfach nach /var/run/docker.pid suchen

2
Raman Sailopal

Folgendes funktioniert auf MacOS und Windows, wenn git bash installiert ist. Unter macOS würde open /Applications/Docker.app den Docker-Deamon starten. Ich habe jedoch nichts Ähnliches für Windows gesehen.

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

Eine Funktion könnte so aussehen:

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

Ich habe ein Skript erstellt, um einen Mongodb-Server zu starten, zu stoppen und erneut zu starten. __ Sie müssen nur einen Pfad innerhalb der Skripts ändern, und ich arbeite auch für Sie: Skript

0