Docker verwendet eine Daemon-basierte Architektur, bei der die CLI eine Verbindung zu einem langlebigen Prozess herstellt, der separat auf Ihrem Computer oder einem Remote-Host ausgeführt wird. CLI-Befehle funktionieren nicht und Ihre Container gehen normalerweise offline, wenn der Daemon stoppt.
So überprüfen Sie, ob der Daemon von Docker aktiv ist, damit Sie Probleme mit Containern und docker
diagnostizieren können Befehl. Wenn der Daemon nicht läuft, sehen Sie jedes Mal, wenn Sie docker
verwenden, die Meldung „Kann keine Verbindung zum Docker-Daemon herstellen“. CLI.
Prüfung mit Systemctl
Sie können den Status von Docker mit systemctl
überprüfen auf Distributionen, die Systemd für die Dienstverwaltung verwenden. Dies deckt die meisten gängigen Betriebssysteme ab, einschließlich Debian, Ubuntu, CentOS und Red Hat.
sudo systemctl status docker
Prüfen Sie, was unter „Aktiv“ angezeigt wird. Wenn Sie active (running)
sehen in Grün läuft der Docker-Daemon und Ihre Container sollten aktiv sein.
Ein aktiver Zustand von inactive
zeigt an, dass der Dienst beendet wurde. Versuchen Sie, es aufzurufen, indem Sie sudo systemctl start docker
ausführen . Der Status sollte sich zu active (running)
ändern nachdem der Daemon startet.
Wenn der Status failed
angezeigt wird in rot, der Daemon konnte aufgrund eines Fehlers nicht gestartet werden. Sie sollten die Startprotokolle des Dienstes überprüfen, die später in systemctl
angezeigt werden Befehlsausgabe, da diese normalerweise Hinweise enthalten, mit denen Sie herausfinden können, was schief gelaufen ist.
Wenn keine offensichtliche Lösung verfügbar ist, starten Sie den Daemon manuell im Debugging-Modus, um weitere Informationen zu seiner Startroutine zu erhalten.
sudo dockerd --debug
Neustart Ihres Hostcomputers oder Neustart des Docker-Dienstes mit systemctl restart docker
kann auch dazu beitragen, vorübergehende Probleme zu lindern.
Inspizieren von Prozessdetails
Eine andere Möglichkeit, nach einem laufenden Docker-Daemon zu suchen, besteht darin, seine Prozess-ID-Datei zu untersuchen. Der Daemon schreibt seine Prozess-ID in /var/run/docker.pid
jedes Mal, wenn es startet. Wenn diese Datei vorhanden ist, sollte Docker ausgeführt werden und für CLI-Verbindungen bereit sein.
cat /var/run/docker.pid
Sie können diese Technik verwenden, um programmatische Skripte zu erstellen, die prüfen, ob der Daemon aktiv ist. Wenn Sie die Datei lesen, erhalten Sie die ID, die Sie mit Tools wie top
verwenden können um weitere Informationen über den Docker-Prozess zu erhalten:
cat /var/run/docker.pid # process id = 1000 top -p 1000
Sie können die Prozess-ID auch mit pidof
erhalten Befehl. Dies akzeptiert einen Prozessnamen und gibt die erste übereinstimmende ID zurück:
pidof dockerd # process id = 1000 # view information with top top -p `pidof dockerd`anzeigen
Es gibt einen aktiven Docker-Daemon auf Ihrem Computer, wenn top
entspricht einem dockerd
Prozess. Dies kann zuverlässiger sein, als nach docker.pid
zu suchen – wenn der Daemon abstürzt, docker.pid
zurückgelassen werden könnte, nachdem der Prozess abgeschlossen ist.
Handhabung von hängengebliebenen Prozessdateien
Der Daemon verweigert den Neustart, wenn eine PID-Datei vorhanden ist. Dies könnte dazu führen, dass Sie in einer Neustartschleife stecken bleiben, wenn die Datei tatsächlich von einem vorherigen Lauf verwaist ist. Sie sehen diese Meldung, wenn Sie dockerd
ausführen :
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
Verwenden Sie pidof dockerd
um sicherzustellen, dass Docker tatsächlich gestoppt wird. Fahren Sie fort, wenn der Befehl keine Ausgabe ausgibt und bestätigen Sie, dass kein Prozess ausgeführt wird.
Führen Sie sudo rm /var/run/docker.pid
aus um die alte Prozess-ID-Datei zu löschen. Der Daemon sollte nun erfolgreich starten, wenn Sie dockerd
das nächste Mal ausführen oder service docker start
.
Probleme mit PID-Dateien treten häufig auf, wenn Sie einen Snapshot einer virtuellen Maschine erstellen und dann eine neue Instanz aus dem Image erstellen. Die Prozessdatei wird in den Snapshot aufgenommen, wodurch der Docker-Daemon in der neuen VM denkt, dass er bereits läuft.
Einzelne Container prüfen
Auf den Status einzelner Container wird über den docker ps
zugegriffen Befehl. Dies gibt eine Tabelle aus, die die Details aller derzeit laufenden Container enthält.
docker ps
Kombiniere das docker ps
Befehl mit grep
um einfach anhand der ID oder des Namens zu überprüfen, ob ein bestimmter Container ausgeführt wird:
docker ps | grep my-container-name
Jetzt wird die Ausgabe gefiltert, um den ausgewählten Container anzuzeigen. Es gibt keine Aufzeichnungen, wenn der Container nicht ausgeführt wird.
Angehaltene Container werden mit docker ps -a
angezeigt . Ein angehaltener Container kann mit dem docker start
gestartet werden Befehl:
docker start my-container
Der Container wird dann in den regulären docker ps
verschoben Ausgang. Sie können es mit docker stop my-container
wieder stoppen .
Schlussfolgerung
Sie haben mehrere Optionen zu berücksichtigen, wenn Sie wissen möchten, ob Docker ausgeführt wird. Da ist der Dienstmanager Ihres Betriebssystems, die docker.pid
Datei und regelmäßige Prozessinspektionstools wie top
und pidof
.
Wenn es um einzelne Container geht, docker ps
stellt die Liste von allem bereit, was derzeit auf Ihrem Host läuft. Umfassendere Informationen zum Status eines beliebigen Containers können mit docker inspect container-name
abgerufen werden die Details zu Netzwerkkonfiguration, Volumes und Bezeichnungen im JSON-Format bereitstellt.