So überprüfen Sie, ob Docker ausgeführt wird oder nicht
94
Ich bin neu bei Docker. Ich schreibe ein einfaches Skript für Docker. Ich muss überprüfen, ob Docker ausgeführt wird oder nicht. Gibt es einen Befehl zum Überprüfen mit dem Containernamen?
Um Probleme mit einem Container zu vermeiden, der sich in einer Absturzschleife befindet und ständig neu gestartet wird, um anzuzeigen, dass er aktiv ist, können Sie Folgendes verbessern, indem Sie das folgende StatusFeld überprüfen :
Wie würden Sie das docker inspect …Innere einer ifAussage eines Bash-Skripts einfügen?
François Romain
14
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
BMitch
2
Ich verwende, docker inspect -f '{{.State.Restarting}}' $container_nameda ich meinen Container mit einer Neustartrichtlinie starte, obwohl Sie hier "true" vermeiden möchten.
Stav Meir
4
Sowohl Bash als auch Docker beschweren sich über die obige ifAussage, wenn der Container nicht läuft. Dies verbirgt den unerwünschten Spucke für den falschen Fall: if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Trevor
1
@MarcoLackovic klingt so, als hätten Sie den obigen Teil "Sie haben systemd installiert" verpasst.
BMitch
42
Am Ende habe ich verwendet
docker info
um mit einem Bash-Skript zu überprüfen, ob die Docker-Engine ausgeführt wird.
Dies beantwortet die Frage nicht. "mit Containernamen überprüfen"
jens.klose
Ja, es scheint, dass die Frage nicht eindeutig ist. Um zu überprüfen, ob der Container ausgeführt wird, den Sie verwenden sollten docker ps --filter name=pattern, können Sie die Ausgabe so formatieren, dass nur der Status überprüft wird, der dieses Flag hinzufügt:--format {{.Status}}
Das habe ich gebraucht, weil es auf allen Plattformen funktioniert !!
Rolljee
leicht und einfach ... ARBEITET.
RMati
14
Für OS X-Benutzer (Mojave 10.14.3)
Folgendes verwende ich in meinem Bash-Skript, um zu testen, ob Docker ausgeführt wird oder nicht
# Check if docker is running
docker_state=$(docker info >/dev/null 2>&1)if[[ $?-ne 0]];then
echo "Docker does not seem to be running, run it first and retry"
exit 1fi
Jeder Docker-Befehl (außer docker -v), z. B. docker ps
Wenn Docker ausgeführt wird, erhalten Sie eine gültige Antwort. Andernfalls wird die Meldung "Ist Ihr Docker-Daemon aktiv?" Angezeigt.
Wir listen alle laufenden Containerprozesse auf (Docker ps -a würde uns auch nicht laufende zeigen, aber das habe ich nicht gebraucht), wir suchen nach einem bestimmten Wort (grep part) und zählen einfach die Zeilen des Ergebnisses (wc -l ), wenn es größer als 0 ist, bedeutet dies, dass wir einige laufende Container gefunden haben, deren Namen unser Schlüsselwort enthalten.
Mit diesem Befehl können Sie überprüfen, ob systemctl status dockerder Status des Dockers angezeigt wird. Wenn Sie starten möchten , können Sie verwenden , systemctl start dockeranstatt systemctlSie versuchen können , auch mit service, service docker statusund service docker startjeweils.
docker attach containerName
docker ps
docker ps
----- Dieser Befehl zeigt nur RUNNING ContainerAntworten:
Wenn Sie nach einem bestimmten Container suchen, können Sie Folgendes ausführen:
Um Probleme mit einem Container zu vermeiden, der sich in einer Absturzschleife befindet und ständig neu gestartet wird, um anzuzeigen, dass er aktiv ist, können Sie Folgendes verbessern, indem Sie das folgende
Status
Feld überprüfen :Wenn Sie wissen möchten, ob dockerd selbst auf dem lokalen Computer ausgeführt wird und systemd installiert ist, können Sie Folgendes ausführen:
Sie können auch mit
docker info
oder eine Verbindung zum Docker herstellen.docker version
Wenn der Dämon nicht verfügbar ist, tritt ein Fehler auf.quelle
docker inspect …
Innere einerif
Aussage eines Bash-Skripts einfügen?if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
docker inspect -f '{{.State.Restarting}}' $container_name
da ich meinen Container mit einer Neustartrichtlinie starte, obwohl Sie hier "true" vermeiden möchten.if
Aussage, wenn der Container nicht läuft. Dies verbirgt den unerwünschten Spucke für den falschen Fall:if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Am Ende habe ich verwendet
um mit einem Bash-Skript zu überprüfen, ob die Docker-Engine ausgeführt wird.
quelle
docker info > /dev/null 2>&1
Wenn Sie die Ausgabe nicht benötigenSie können den Docker-Status überprüfen mit:
systemctl is-active docker
Sie können es verwenden als:
quelle
docker ps --filter name=pattern
, können Sie die Ausgabe so formatieren, dass nur der Status überprüft wird, der dieses Flag hinzufügt:--format {{.Status}}
Alle Container auflisten:
docker container ls -a
ls
= Liste-a
= alleÜberprüfen Sie die Spalte "Status"
quelle
Für OS X-Benutzer (Mojave 10.14.3)
Folgendes verwende ich in meinem Bash-Skript, um zu testen, ob Docker ausgeführt wird oder nicht
quelle
Jeder Docker-Befehl (außer
docker -v
), z. B.docker ps
Wenn Docker ausgeführt wird, erhalten Sie eine gültige Antwort. Andernfalls wird die Meldung "Ist Ihr Docker-Daemon aktiv?" Angezeigt.Sie können auch Ihren Task-Manager überprüfen.
quelle
Manchmal kennen Sie den vollständigen Containernamen nicht. In diesem Fall hat dies bei mir funktioniert:
Wir listen alle laufenden Containerprozesse auf (Docker ps -a würde uns auch nicht laufende zeigen, aber das habe ich nicht gebraucht), wir suchen nach einem bestimmten Wort (grep part) und zählen einfach die Zeilen des Ergebnisses (wc -l ), wenn es größer als 0 ist, bedeutet dies, dass wir einige laufende Container gefunden haben, deren Namen unser Schlüsselwort enthalten.
quelle
Mit diesem Befehl können Sie überprüfen, ob
systemctl status docker
der Status des Dockers angezeigt wird. Wenn Sie starten möchten , können Sie verwenden ,systemctl start docker
anstattsystemctl
Sie versuchen können , auch mitservice
,service docker status
undservice docker start
jeweils.quelle
systemd
als Init verwendet.systemctl status docker
Richtig anzeigen ist, dass der Docker-Dienst ausgeführt wird. Danke dir.Sie können auch mit dem folgenden Befehl überprüfen, ob ein bestimmter Docker-Container ausgeführt wird oder nicht:
Dieser Befehl prüft, ob beispielsweise mein Postgres-Container ausgeführt wird oder nicht, und gibt die Ausgabe als "Running" zurück: true
Hoffe das hilft.
quelle
Lauf:
Wenn Docker ausgeführt wird, sehen Sie:
Wenn Docker nicht ausgeführt wird , wird Folgendes angezeigt :
quelle
Wenn das zugrunde liegende Ziel lautet "Wie kann ich einen Container starten, wenn Docker gestartet wird?"
Wir können die Neustartrichtlinie von Docker verwenden
So fügen Sie einem vorhandenen Container eine Neustartrichtlinie hinzu:
Docker: Fügen Sie einem bereits erstellten Container eine Neustartrichtlinie hinzu
Beispiel:
quelle
Auf einem Mac wird möglicherweise das folgende Bild angezeigt:
Wenn Sie mit der rechten Maustaste auf das Docker-Symbol klicken, sehen Sie:
Alternative:
docker ps
und
docker run hello-world
quelle
Wie ich in SSH.Run einchecke:
Wenn Antwort: D-Bus-Verbindung konnte nicht hergestellt werden: Betrieb nicht zulässig
Es ist ein Docker oder WSL-Container.
quelle
docker ps -a
Sie können alle Docker-Container sehen, ob sie lebendig oder tot sind.
quelle