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?


3
Jeder Docker-Befehl (außer Docker -v), wie Docker ps
Glen Pierce

docker attach containerName
Mattia Dinosaurier

oder versuchen Sie docker ps
Mattia Dinosaur

1
Sudo Systemctl Status Docker
Duk

docker ps----- Dieser Befehl zeigt nur RUNNING Container
Suhaib

Antworten:


97

Wenn Sie nach einem bestimmten Container suchen, können Sie Folgendes ausführen:

if [ "$( docker container inspect -f '{{.State.Running}}' $container_name )" == "true" ]; then ...

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 :

if [ "$( docker container inspect -f '{{.State.Status}}' $container_name )" == "running" ]; then ...

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:

systemctl show --property ActiveState docker

Sie können auch mit docker infooder eine Verbindung zum Docker herstellen. docker versionWenn der Dämon nicht verfügbar ist, tritt ein Fehler auf.


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.


4
Diese Antwort wird unterschätzt. Es ist plattformübergreifend und geht schnell vorbei.
Andy Fleming

docker info > /dev/null 2>&1Wenn Sie die Ausgabe nicht benötigen
Buggymcbugfix

22

Sie können den Docker-Status überprüfen mit: systemctl is-active docker

  ~  systemctl is-active docker
active

Sie können es verwenden als:

  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
is alive :)

  ~  sudo systemctl stop docker

  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
 * empty response *

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}}
Hernan Garcia

15

Alle Container auflisten:

docker container ls -a

ls= Liste
-a= alle

Überprüfen Sie die Spalte "Status"


1
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 1
fi

7

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.


7

Manchmal kennen Sie den vollständigen Containernamen nicht. In diesem Fall hat dies bei mir funktioniert:

if [ $(docker ps | grep keyword | wc -l) -gt 0 ]
then 
    echo "Running!"
else
    echo "Not running!"
    exit 1
fi

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.


5

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.


5
Diese Antwort setzt voraus, dass der Endbenutzer systemdals Init verwendet.
Rafael

systemctl status dockerRichtig anzeigen ist, dass der Docker-Dienst ausgeführt wird. Danke dir.
Imsrgadich

3

Sie können auch mit dem folgenden Befehl überprüfen, ob ein bestimmter Docker-Container ausgeführt wird oder nicht:

docker inspect postgres | grep "Running"

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.


Genau das habe ich gesucht. Und es funktioniert. (Es ist gut, wenn Leute, die etwas
ablehnen

Ich wählte nicht nach unten, sondern „Fehler: kein solches Objekt: Postgres“
ged

3

Lauf:

docker version

Wenn Docker ausgeführt wird, sehen Sie:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Server: Docker Engine - Community
 Engine:
  Version:          ...
 [omitted]

Wenn Docker nicht ausgeführt wird , wird Folgendes angezeigt :

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Error response from daemon: Bad response from Docker engine


2

Auf einem Mac wird möglicherweise das folgende Bild angezeigt:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie mit der rechten Maustaste auf das Docker-Symbol klicken, sehen Sie:

Geben Sie hier die Bildbeschreibung ein

Alternative:

docker ps

und

docker run hello-world


0

Wie ich in SSH.Run einchecke:

systemctl

Wenn Antwort: D-Bus-Verbindung konnte nicht hergestellt werden: Betrieb nicht zulässig

Es ist ein Docker oder WSL-Container.


0

docker ps -a

Sie können alle Docker-Container sehen, ob sie lebendig oder tot sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.