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.
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.
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..
Sie können auch einfach nach /var/run/docker.pid suchen
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
}
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