Wie man den Docker Logs Befehl nutzt

Der Befehl docker logs ist ein unverzichtbares Diagnosewerkzeug, das alle Ausgaben eines Containers auf Standardausgabe (stdout) und Standardfehler (stderr) anzeigt. Besonders hilfreich ist er beim Beheben von Startfehlern, beim Analysieren des Laufzeitverhaltens oder beim Prüfen von Fehlermeldungen. Mit diesem Tool erhält man direkten Zugriff auf die Containeraktivitäten, ohne sich anhängen oder per exec verbinden zu müssen.

Während sich docker logs auf die Anwendungs-Ausgaben konzentriert, entfaltet er sein volles Potenzial in Kombination mit Befehlen wie docker inspect und docker exec, die Metadaten und eine interaktive Shell bereitstellen. In dieser Anleitung wird erklärt, wie man docker logs zum Anzeigen, Streamen und Filtern von Container-Logs nutzt, um Probleme effizient zu erkennen und zu beheben.

Schnellreferenz

Wenn du bereits mit Docker vertraut bist und nur schnell Container-Logs prüfen willst, helfen dir die folgenden Befehle:

# Alle laufenden Container anzeigen, um die Container-ID zu erhalten
$ docker container ls

# Logs eines Containers anzeigen
$ docker logs <container_id>

# Logs in Echtzeit streamen
$ docker logs -f <container_id>

# Die letzten 100 Zeilen der Logs anzeigen
$ docker logs --tail 100 <container_id>

# Logs ab einem bestimmten Zeitpunkt anzeigen
$ docker logs --since="2025-05-20T10:00:00" <container_id>

# Logs bis zu einem bestimmten Zeitpunkt anzeigen
$ docker logs --until="2025-05-20T12:00:00" <container_id>

# Logs mit Zeitstempeln anzeigen
$ docker logs --timestamps <container_id>

Diese Beispiele decken die gängigsten Anwendungsfälle für das Prüfen und Filtern von Logs ab. Im Folgenden findest du detaillierte Erklärungen und Beispiele.

Container-Logs anzeigen

Mit dem Befehl docker logs lassen sich Ausgaben eines Containers aus stdout und stderr einsehen. Dazu gehören Anwendungs-Logs, Startmeldungen und Fehlermeldungen, die essenziell für die Diagnose sind.

Befehlssyntax

docker logs <container_id>

  • docker logs: Gibt die vollständige stdout- und stderr-Ausgabe des Containers aus.
  • <container_id>: Die kurze oder vollständige ID des Containers, die mit docker container ls ermittelt werden kann.

Anwendungsfall

  • Zeigt alle Logs seit dem Start des Containers.
  • Beeinflusst den laufenden Container nicht.
  • Nützlich, um zu prüfen, ob Dienste korrekt gestartet wurden, um Fehler zu analysieren oder Laufzeitprobleme zu untersuchen.

Befehlbeispiel

Zuerst die laufenden Container auflisten:

Beispielausgabe:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
ea45fa0f96ac   nginx     "/docker-entrypoint.…"   44 seconds ago  Up 44 seconds  80/tcp    web

Nun die Logs des Containers mit seiner ID oder seinem Namen abrufen:

$ docker logs ea45fa0f96ac

Beispielausgabe der Logs:

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
...
2025/05/28 20:44:38 [notice] 1#1: start worker process 29

Logs in Echtzeit streamen

Um die Logs eines Containers fortlaufend zu überwachen, wird die Option -f oder --follow verwendet. Damit bleibt die Sitzung aktiv und neue Logeinträge werden kontinuierlich ausgegeben. Dies ist besonders nützlich beim Debuggen von Live-Diensten oder zur Beobachtung laufender Prozesse.

Befehlssyntax

docker logs -f <container_id>

  • docker logs: Gibt die Ausgaben aus stdout und stderr aus.
  • -f oder –follow: Streamt Logs fortlaufend.
  • <container_id>: ID des Containers (kurz oder vollständig).

Anwendungsfall

  • Streamt Logs kontinuierlich, bis der Vorgang mit Ctrl + C beendet wird.
  • Hilfreich zur Überwachung von Hintergrundprozessen, Webanfragen oder Deployments.
  • Optimal, um in Echtzeit auf Container-Reaktionen zu achten.

Befehlbeispiel

Zunächst die laufenden Container anzeigen:

Logs in Echtzeit aus einem Container streamen:

$ docker logs -f 8f8f72f26159

Dies zeigt die Logs des Containers live an. Um das Streaming zu stoppen, drücke Ctrl + C.

Logs nach Zeit und Zeilen filtern

Mit bestimmten Flags kannst du die Log-Ausgabe gezielt einschränken, um unnötige Einträge auszublenden und dich auf relevante Ereignisse zu konzentrieren. So lassen sich Logs eines bestimmten Zeitraums oder nur die aktuellsten Zeilen anzeigen.

Optionen zur Log-Filterung

Flag Wert erforderlich Typ Beschreibung
–tail Ja (Zahl) Integer Zeigt nur die letzten n Zeilen an
–since Ja (Zeitstempel) String Zeigt Logs ab einem bestimmten Zeitpunkt an
–until Ja (Zeitstempel) String Zeigt Logs bis zu einem bestimmten Zeitpunkt an
–timestamps Nein Boolean Fügt jedem Log-Eintrag einen ISO 8601 Zeitstempel hinzu

Diese Optionen können mit docker logs kombiniert werden, um präziser Fehler zu analysieren. Nachfolgend findest du Beispiele zu jeder Option.

Neueste Logs mit –tail anzeigen

Befehlssyntax

docker logs --tail <anzahl_der_zeilen> <container_id>

  • –tail: Beschränkt die Ausgabe auf die letzten n Zeilen (z. B. 10, 100, 500).
  • <container_id>: Die ID des Containers (kurz oder vollständig).

Anwendungsfall

  • Zeigt nur die aktuellsten Log-Einträge.
  • Vermeidet unnötiges Scrollen durch lange Logs.
  • Ideal, um schnell die letzten Aktivitäten zu prüfen.

Befehlbeispiel

Laufende Container auflisten:

Die letzten 10 Zeilen eines Containers anzeigen:

$ docker logs --tail 10 ea45fa0f96ac

Beispielausgabe:

/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
...
2025/05/28 20:44:38 [notice] 1#1: start worker process 29

Logs ab einem bestimmten Zeitpunkt mit –since

Befehlssyntax

docker logs --since="<zeitstempel>" <container_id>

  • –since: Zeigt Logs ab einem bestimmten Zeitpunkt.
  • Unterstützt ISO-Timestamps (z. B. 2025-05-20T10:00:00) oder relative Angaben (z. B. 30m, 2h, 1d).

Anwendungsfall

  • Filtert Logs, die nach einem bestimmten Zeitpunkt erstellt wurden.
  • Hilfreich zur Eingrenzung von Logs bei Tests oder bekannten Ereignissen.
  • Unterstützt absolute und relative Zeitangaben.

Befehlbeispiel

Zuerst Container auflisten:

Logs ab einem festen Zeitstempel anzeigen:

$ docker logs --since="2025-05-27T10:00:00" ea45fa0f96ac

Ausgabe nur ab dem angegebenen Zeitpunkt.

Logs der letzten 30 Minuten anzeigen:

$ docker logs --since="30m" ea45fa0f96ac

Filtert die Ausgabe auf die letzten 30 Minuten.

Logs bis zu einem bestimmten Zeitpunkt mit –until

Befehlssyntax

docker logs --until="<zeitstempel>" <container_id>

  • docker logs: Gibt die Ausgaben aus stdout und stderr aus.
  • –until: Zeigt Logs bis zu einem bestimmten Zeitpunkt (z. B. 2025-05-20T12:00:00 oder relativ wie 30m, 2h).
  • <container_id>: Container-ID.

Anwendungsfall

  • Begrenzt die Ausgabe auf Logs vor einem bestimmten Zeitpunkt.
  • Nützlich, um den Systemzustand vor einem Fehler zu prüfen.
  • Lässt sich gut mit --since kombinieren, um einen Zeitraum zu definieren.

Befehlbeispiel

Aktive Container auflisten:

Logs vor einem bestimmten Zeitpunkt anzeigen (z. B. 28. Mai 2025, 20:44:39):

$ docker logs --until="2025-05-28T20:44:39" ea45fa0f96ac

Beispielausgabe:

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
...

Logs anzeigen, die älter als zwei Stunden sind:

$ docker logs --until="2h" ea45fa0f96ac

Besonders hilfreich, um Logs vor einem Ausfall oder früheren Ereignissen einzusehen.

Logs mit Zeitstempeln versehen (–timestamps)

Befehlssyntax

docker logs --timestamps <container_id>

  • –timestamps: Ergänzt jeden Log-Eintrag mit einem ISO 8601 Zeitstempel.
  • <container_id>: Container-ID.

Anwendungsfall

  • Erleichtert die Zuordnung von Logs zu Anwendungsereignissen und Fehlern.
  • Hilft bei Debugging von Latenz- oder Zeitproblemen.
  • Besonders nützlich beim Einsatz von Log-Aggregatoren.

Befehlbeispiel

Container identifizieren und Logs mit Zeitstempeln anzeigen:

$ docker container ls
$ docker logs --timestamps ea45fa0f96ac

Beispielausgabe:

2025-05-28T20:44:38.654359332Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2025-05-28T20:44:38.664232169Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2025-05-28T20:44:38.690538640Z 2025/05/28 20:44:38 [notice] 1#1: nginx/1.27.5
2025-05-28T20:44:38.690643927Z 2025/05/28 20:44:38 [notice] 1#1: OS: Linux 6.8.0-60-generic

Besonders praktisch für die Korrelation von Logs und die Integration in Monitoring-Systeme.

Fehlerbehebung beim Anzeigen von Logs

Beim Ausführen von docker logs können Fehler auftreten wie:

  • Error: No such container: <container_id>
  • Error response from daemon: permission denied

Diese entstehen meist durch falsche Container-Referenzen oder fehlende Berechtigungen.

Fehler „No such container“

Tritt auf, wenn die Container-ID ungültig, unvollständig oder der Container bereits beendet ist.

So beheben

  • Laufende Container anzeigen:
  • Beendete Container ebenfalls auflisten:
  • Die korrekte Container-ID oder den Namen verwenden:

$ docker logs <gültige_container_id_oder_name>

Fehler „Permission denied“

Tritt auf, wenn der aktuelle Nutzer keine Berechtigung zum Zugriff auf Docker hat.

So beheben

  • Befehl mit sudo ausführen:

$ sudo docker logs <container_id>

  • Nutzer zur Docker-Gruppe hinzufügen:

$ sudo usermod -aG docker $USER

Danach ab- und wieder anmelden, damit die Änderung wirksam wird.

Fazit

In dieser Anleitung hast du gelernt, wie man den Befehl docker logs effektiv zur Fehlerdiagnose in Containern einsetzt. Du weißt nun, wie man:

  • Logs eines laufenden Containers anzeigt,
  • Ausgaben in Echtzeit streamt,
  • Logs mit --tail, --since, --until und --timestamps filtert,
  • und typische Fehler wie ungültige Container-IDs oder fehlende Berechtigungen behebt.

Mit diesen Techniken kannst du Probleme schneller erkennen und stabile Docker-Umgebungen sicherstellen. Weitere Details findest du in der offiziellen Docker-Dokumentation zum Befehl docker logs.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: