In diesem Artikel zeigen wir Ihnen alles, was Sie über Docker-Protokolle wissen müssen und wie Sie damit arbeiten.
Das Leben wäre viel einfacher, wenn sich Anwendungen, die in Docker-Containern ausgeführt werden, immer korrekt verhalten würden. Wenn die Dinge unweigerlich schief gehen, benötigen Sie Diagnoseinformationen, um herauszufinden, wie und warum.
Wenn Sie ein Systemadministrator sind und für das Erstellen und Verwalten von containerisierten Anwendungen verantwortlich sind, ist die Docker-Protokollierung eine der wichtigsten für Sie. Der Umgang mit den Protokollen ist eine der besten Möglichkeiten, Fehler aufzudecken, beim Debuggen zu helfen und die Leistung Ihrer Anwendung zu optimieren.
Lassen Sie uns also in die Docker-Protokollierung und ihre Protokolldateien eintauchen.
Was sind Docker-Protokolle
Zunächst müssen Sie verstehen, wie Protokolle generiert werden.
Kurz gesagt, Docker-Protokolle sind die Konsolenausgabe von laufenden Containern . Sie stellen die stdout
bereit (Standardausgabe) und stderr
(Standardfehler) Streams von Prozessen, die in einem Container ausgeführt werden. In einem Container überwacht Docker stdout
und stderr
und sammelt die Ausgabe der Streams, und dies ist die Quelle der Containerprotokolle.
Die Anmeldung bei Docker ist nicht dasselbe wie die Anmeldung an anderer Stelle. In Docker wird alles nach stdout
geschrieben und stderr
streams wird implizit an einen Protokollierungstreiber gesendet, der einen Mechanismus für den Zugriff auf diese Streams und das Senden der Protokolle an eine Datei bereitstellt. Der Standardtreiber für Docker-Protokolle ist „json-file“, der die Protokolle im JSON-Format in lokale Dateien auf dem Docker-Host schreibt.
Alle im Container gespeicherten Protokolle werden gelöscht, wenn er beendet oder heruntergefahren wird.
Das folgende Beispiel zeigt JSON-Protokolle, die mit dem json-file-Treiber erstellt wurden:
{"log":"Adding password for user webdav\n","stream":"stderr","time":"2021-08-01T15:58:05.329724917Z"}
Sie können den folgenden Befehl verwenden, um den aktuellen Standardprotokollierungstreiber zu finden:
docker info --format '{{.LoggingDriver}}'
json-file
Wo werden Docker-Protokolle gespeichert
Wenn Sie das standardmäßige Protokollformat JSON verwenden, finden Sie die Protokolle eines Containers in /var/lib/docker/containers/
Verzeichnis auf einem Linux-Docker-Host.
/var/lib/docker/containers/<container-id>/<container-id>-json.log
Im oben gezeigten Pfad ist die <container-id>
ist die id des laufenden Containers. Wenn Sie nicht sicher sind, welche id zu welchem Container gehört, können Sie das docker container ls
ausführen Befehl, um alle laufenden Container aufzulisten.
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e9b6f4b1a3 jbbodart/alpine-nginx-webdav "/bin/sh -c '/entryp…" 51 minutes ago Up 51 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp webdav
So zeigen Sie Docker-Protokolle an
Angenommen, Sie haben einen Container ausgeführt und möchten auf die Docker-Protokolle für diesen Container zugreifen. Wie können Sie diese Aufgabe erfüllen?
Zuerst können Sie den folgenden Befehl verwenden, um nach derzeit laufenden Containern zu suchen:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e9b6f4b1a3 jbbodart/alpine-nginx-webdav "/bin/sh -c '/entryp…" 58 minutes ago Up 58 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp webdav
Dieser Befehl druckt eine Liste der laufenden Container. In unserem Fall ist der wichtigste Parameter die CONTAINER ID , die wir im nächsten Schritt verwenden werden.
Da Sie nun sicher sind, dass Ihr Container ausgeführt wird, verwenden wir die CONTAINER-ID , um alle Protokolle anzuzeigen.
Docker-Protokolle anzeigen
Verwenden Sie zum Abfragen von Containerprotokollen die docker logs
Befehl. Es ist ein Befehl, der alle Informationen anzeigt, die von einem laufenden Container protokolliert werden. Mit docker logs CONTAINER_ID
, können Sie alle Protokolle sehen, die von einem bestimmten Container übertragen werden, der durch eine eindeutige ID identifiziert wird.
docker logs 99e9b6f4b1a3
172.17.0.1 - webdav [01/Aug/2021:18:38:39 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
2021/08/01 18:39:09 [info] 10#10: *3 client 172.17.0.1 closed keepalive connection
172.17.0.1 - webdav [01/Aug/2021:18:39:09 +0000] "PUT /docker-logs.png HTTP/1.1" 201 25 "-" "curl/7.78.0"
So folgen Sie dem Containerprotokoll
Dadurch werden Ihnen zwar die Protokolle angezeigt, Sie können jedoch keine kontinuierliche Protokollausgabe anzeigen. Mit dem -f
flag folgt den Docker-Containerprotokollen.
docker logs -f 99e9b6f4b1a3
Nur die neuesten Zeilen anzeigen
In einigen Fällen möchten Sie schnell nur die letzten 10 Protokollzeilen für Ihren Container überprüfen. Sie können den --tail
verwenden Option, um die Anzahl der anzuzeigenden Protokolle anzugeben.
docker logs --tail 10 99e9b6f4b1a3
Protokolle seit einem bestimmten Datum anzeigen
Wenn Sie Ihre Docker-Protokolle überprüfen, möchten Sie die Ausgabe häufig auf eine bestimmte Anzahl von Zeilen beschränken, um nicht mit Informationen überschwemmt zu werden.
Wenn Sie die Protokolle von einem bestimmten Zeitpunkt bis jetzt sehen möchten, wird der --since
Option hilft bei dieser Aufgabe.
Um beispielsweise Containerprotokolle seit 20 Minuten anzuzeigen, würden Sie Folgendes schreiben:
docker logs --since 20m 99e9b6f4b1a3
Sie können auch ein Datumsformat schreiben, sofern es im ISO-Format bereitgestellt wird:
docker logs --since 2021-07-19T10:00:00 99e9b6f4b1a3
Protokolle bis zu einem bestimmten Datum anzeigen
Um Protokolle bis zu einem bestimmten Datum anzuzeigen, verwenden Sie --until
Option mit einem Datum oder einer Dauer.
docker logs --until 20m 99e9b6f4b1a3
Oder Sie können auch ein Datumsformat angeben, wie Sie es zuvor für --since
getan haben Option.
docker logs --until
2021-07-19T10:00:00 99e9b6f4b1a3
Schlussfolgerung
Docker-Protokolle helfen Ihnen, Probleme schneller zu debuggen und zu beheben. In diesem Tutorial haben Sie gelernt, was sie sind und wie sie überprüft und Optionen verwendet werden können, um sie zu überwachen.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.