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.
Passende Infrastruktur bei centron
Vom Container zum Cluster: Managed Kubernetes mit cStack gibt es ab 29,99 € im Monat – Control Plane, AutoScaler und Traffic inklusive. Managed Kubernetes ansehen →
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 lsBeispielausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ea45fa0f96ac nginx "/docker-entrypoint.…" 44 seconds ago Up 44 seconds 80/tcp webNun die Logs des Containers mit seiner ID oder seinem Namen abrufen:
$ docker logs ea45fa0f96acBeispielausgabe 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
1#1: start worker process 29Logs 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 lsLogs in Echtzeit aus einem Container streamen:
$ docker logs -f 8f8f72f26159Dies 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 lsDie letzten 10 Zeilen eines Containers anzeigen:
$ docker logs --tail 10 ea45fa0f96acBeispielausgabe:
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
...
2025/05/28 20:44:38
1#1: start worker process 29Logs 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 lsLogs ab einem festen Zeitstempel anzeigen:
$ docker logs --since="2025-05-27T10:00:00" ea45fa0f96acAusgabe nur ab dem angegebenen Zeitpunkt.
Logs der letzten 30 Minuten anzeigen:
$ docker logs --since="30m" ea45fa0f96acFiltert 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
--sincekombinieren, um einen Zeitraum zu definieren.
Befehlbeispiel
Aktive Container auflisten:
$ docker container lsLogs vor einem bestimmten Zeitpunkt anzeigen (z. B. 28. Mai 2025, 20:44:39):
$ docker logs --until="2025-05-28T20:44:39" ea45fa0f96acBeispielausgabe:
/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" ea45fa0f96acBesonders 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 ea45fa0f96acBeispielausgabe:
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
1#1: nginx/1.27.5
2025-05-28T20:44:38.690643927Z 2025/05/28 20:44:38
1#1: OS: Linux 6.8.0-60-genericBesonders 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 $USERDanach 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,--untilund--timestampsfiltert, - 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.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.