GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Docker-Protokolle:Was sie sind und wie sie verwendet werden (mit Beispielen)

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.


Docker
  1. So verwenden Sie die Befehle „cat“ und „tac“ mit Beispielen in Linux

  2. Was ist Docker? Erfahren Sie, wie Sie Container verwenden – mit Beispielen erklärt

  3. Verwendung von Pipes und Named Pipes unter Linux (mit Beispielen)

  4. Was sind Docker-Volumes und wie verwenden Sie sie?

  5. Wie und warum man einen Remote-Docker-Host verwendet

So installieren und verwenden Sie Docker Compose unter Ubuntu 20.04

So installieren und verwenden Sie Docker Compose unter Ubuntu 22.04

So installieren und verwenden Sie Docker unter Ubuntu 22.04

Was ist Docker Compose und wie wird es verwendet?

So installieren und verwenden Sie Docker unter Ubuntu 20.04

Was ist PPA in Ubuntu Linux und wie verwende ich sie?