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:
$ docker container ls
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:
$ docker container ls
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:
$ docker container ls
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:
$ docker container ls
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:
$ docker container ls
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:
$ docker container ls
- Beendete Container ebenfalls auflisten:
$ docker container ls -a
- 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.