Docker logs im Detail: 7 Tipps zur schnellen Fehlersuche in Containern

docker logs payment-service – Enter, und der Bildschirm füllt sich mit Zehntausenden INFO-Zeilen. Der Payment-Service in Produktion ist gerade ausgefallen – wo in diesem Log-Strom steckt die eine ERROR-Zeile, die weiterhilft?
Log-Flut, Echtzeit-Monitoring, Filter nach Zeitraum, schnelles Finden von Fehlermeldungen – in kritischen Momenten ist das schwieriger, als man denkt. Dieser Artikel stellt 7 praxisnahe docker logs-Tipps vor – von den Basics bis zu fortgeschrittenen Kombinationen – damit Sie Container-Probleme schnell eingrenzen.
Grundlegende Log-Anzeige
1. Die einfachste Variante
Zuerst die Basis. Diesen Befehl kennen Sie sicher:
docker logs <Container-Name>
# oder mit Container-ID
docker logs abc123def456
Er gibt alle Logs vom Start bis jetzt auf stdout aus. Klingt praktisch – in der Realität scrollt alles wie ein Wasserfall vorbei, und Sie sehen nichts.
Beim ersten Mal war der Container drei Tage gelaufen – Zehntausende Zeilen. Das Terminal raste, und ich starrte minutenlang – ohne eine einzige ERROR-Zeile zu erwischen. Später wurde klar: Für diesen Fall ist der „nackte“ Befehl die falsche Wahl.
Wann lohnt sich dieser Basisbefehl?
Ehrlich gesagt nur in zwei Fällen:
- Der Container ist gerade erst gestartet, die Logs sind noch überschaubar
- Sie wollen alle Logs in eine Datei exportieren
Sonst: lieber nicht. Es gibt bessere Wege.
2. Die neuesten N Zeilen anzeigen
Das ist im Alltag der häufigste Trick:
docker logs --tail 50 my-container
--tail zeigt nur die letzten N Zeilen. Ich nehme meist 50 oder 100 – genug für einen ersten Eindruck, ohne unterzugehen.
Praxisbeispiel:
Letzte Woche wurde unser API-Service plötzlich langsam. Mein erster Schritt:
docker logs --tail 100 api-server
In den letzten 100 Zeilen stand sofort eine Warnung zu Database-Connection-Timeout. Das Problem war eingegrenzt – kein Code-Bug, sondern die Datenbank.
Die Idee: Zuerst die neuesten Logs lesen und die Richtung erkennen. Fehlt der Hinweis dort, geht es mit anderen Methoden tiefer.
Wenn Sie unsicher sind, wie viele Zeilen Sie brauchen: Starten Sie mit 50. Reicht nicht, 100 – dann 200. Schrittweise ist effizienter als alles auf einmal.
Echtzeit-Monitoring
3. Log-Stream live verfolgen
Besonders beim Debuggen nützlich – wie tail -f unter Linux:
docker logs -f my-container
Mit -f (follow) laufen neue Log-Zeilen sofort im Terminal auf.
Typische Einsatzfälle:
-
Beim Container-Start
Nach dem Deploy Container starten und sofort-fmitlaufen lassen. Fehler in der Config sehen Sie sofort – nicht erst, wenn der Dienst schon down ist. -
Bug live mitschneiden
Tritt ein Fehler nur bei bestimmten Aktionen auf? Ich startedocker logs -f, reproduziere den Fall – und habe die Meldung direkt im Terminal.
Praktische Kombination:
docker logs -f --tail 100 my-container
Sie sehen die letzten 100 Zeilen und verfolgen danach live weiter – guter Überblick vor dem Monitoring.
Ein Kollege starrte einmal eine halbe Stunde auf -f, ohne neue Zeile – der Container war längst gestoppt. Vor -f kurz prüfen: docker ps, ob der Container läuft.
Präzises Filtern
4. Nach Zeitraum filtern
Eine meiner Lieblingsfunktionen. Das Monitoring meldet: „Gestern um 3 Uhr Fehler“ – Sie sehen den Alarm erst morgens, und seitdem sind wieder Tausende Zeilen dazugekommen. Wie finden Sie genau diesen Zeitpunkt?
Mit --since und --until:
# Logs ab einem Zeitpunkt
docker logs --since "2025-12-18T03:00:00" my-container
# Logs in einem Zeitfenster
docker logs --since "2025-12-18T03:00:00" --until "2025-12-18T04:00:00" my-container
Das Format ist ISO 8601 – Sie müssen es nicht auswendig kennen. Docker akzeptiert auch relative Angaben:
# Letzte Stunde
docker logs --since 1h my-container
# Letzte 30 Minuten
docker logs --since 30m my-container
# Seit gestern
docker logs --since 24h my-container
Praxisbeispiel:
Ein Order-Service fiel um 4 Uhr nachts aus. Um 9 Uhr lag schon fünf Stunden Log-Material vor. Ich nutzte:
docker logs --since "2025-12-18T03:30:00" --until "2025-12-18T04:30:00" order-service
Nur eine Stunde um den Ausfall – sofort der Stacktrace zu OutOfMemory. Bei Vollansicht hätte die Suche deutlich länger gedauert.
5. Zeitstempel anzeigen
Sie sehen ERROR in den Logs, wissen aber nicht wann – und können es nicht mit Monitoring-Daten abgleichen. Dann brauchen Sie Zeitstempel:
docker logs -t my-container
-t setzt vor jede Zeile einen Timestamp, etwa so:
2025-12-18T10:23:45.123456789Z [INFO] Server started
2025-12-18T10:23:47.234567890Z [ERROR] Database connection failed
So wissen Sie exakt, wann jede Zeile entstand. Ich kombiniere das gern:
# Letzte 30 Minuten mit Zeitstempel
docker logs -t --since 30m my-container
# Live-Monitoring mit Zeitstempel
docker logs -f -t my-container
Bei Performance-Analysen sind Timestamps Gold wert: Sie sehen, wie lange ein Request dauerte und wo es hakt.
6. Mit grep nach Stichwörtern filtern
Überall INFO, Sie wollen nur ERROR? grep hilft:
docker logs my-container | grep "ERROR"
Nur Zeilen mit „ERROR“ erscheinen. Ein Fallstrick:
Manchmal greift grep nicht!
Container schreiben Logs teils nach stderr statt stdout – die Pipe | verarbeitet standardmäßig nur stdout.
Lösung: stderr nach stdout umleiten:
docker logs my-container 2>&1 | grep "ERROR"
2>&1 leitet stderr (Deskriptor 2) auf stdout (Deskriptor 1) – grep sieht dann alles.
Weitere nützliche Kombinationen:
# 10 Zeilen Kontext um ERROR
docker logs my-container 2>&1 | grep -C 10 "ERROR"
# Groß-/Kleinschreibung ignorieren
docker logs my-container 2>&1 | grep -i "error"
# Die letzten 20 Fehler
docker logs -t my-container 2>&1 | grep -i "error" | tail -20
-C 10 zeigt je 10 Zeilen vor und nach dem Treffer – oft brauchen Sie den Kontext, nicht nur die eine ERROR-Zeile.
Fortgeschrittene Techniken
7. Physischen Speicherort der Log-Datei finden
Container-Logs liegen als Dateien auf dem Host. Wo genau?
docker inspect --format='{{.LogPath}}' my-container
Typische Ausgabe:
/var/lib/docker/containers/abc123.../abc123...-json.log
Wofür ist das gut?
-
Datei direkt lesen
Bei sehr großen Logs kanndocker logsden Docker-Daemon belasten – manchmal ist direktes Lesen schneller:sudo tail -f /var/lib/docker/containers/abc123.../abc123...-json.log -
Backup
Logs archivieren? Datei kopieren:sudo cp /var/lib/docker/containers/abc123.../abc123...-json.log ./backup/ -
Analyse mit Editor-Tools
In vim oder einem anderen Editor sind Suche und Navigation oft flexibler als reines grep.
Die Datei ist JSON – jede Zeile ein JSON-Objekt, optisch unübersichtlich. Für lesbaren Text bleibt docker logs meist angenehmer.
Logs als Plaintext exportieren:
docker logs my-container > container.log
Reiner Text – gut für Analyse oder Weitergabe.
Best Practices für Produktion
8. Log-Rotation (Festplatte schützen)
In Produktion leicht vergessen – und dann extrem teuer.
Ein echtes Desaster:
Ein Container lief monatelang, Logs wuchsen unbegrenzt, irgendwann war die Host-Festplatte voll. Alle Container fielen aus, die DB konnte nicht mehr schreiben, die Site war down. Zwei Stunden Debugging – Ursache: Log-Dateien.
Wie vermeiden?
Log-Rotation konfigurieren. In /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Parameter:
max-size: maximal 10 MB pro Dateimax-file: höchstens 3 Dateien behalten
Pro Container also höchstens 10 MB × 3 = 30 MB. Ab 10 MB legt Docker eine neue Datei an; ab vier Dateien wird die älteste gelöscht.
Aktivierung:
Nach Änderung an daemon.json Docker neu starten:
sudo systemctl restart docker
Hinweis: Neustart betrifft alle Container – in Produktion ein passendes Wartungsfenster wählen.
Nur für einen Container:
docker run -d \
--log-opt max-size=10m \
--log-opt max-file=3 \
my-image
Andere Container bleiben unverändert.
9. Log-Strategie in Produktion
Bei großen Log-Mengen wird docker logs langsam oder hängt – der Docker-Daemon spürt die Last.
Abwägung nach Projektgröße:
-
Kleine Projekte (1–10 Container):
docker logs+ Log-Rotation reicht oft- Einfach, ohne Extra-Infrastruktur
-
Mittlere und große Projekte (10+ Container, Microservices):
- Zentrales Logging ist Pflicht
- Klassiker: ELK (Elasticsearch + Logstash + Kibana)
- Alternativen: Loki, Fluentd, Splunk
Warum reicht docker logs allein nicht?
- Performance: Viele parallele Log-Abfragen belasten den Daemon
- Aggregation: Ein Request über zehn Services – Logs liegen in zehn Containern
- Historie: Nach Container-Neustart fehlen alte Logs oft in
docker logs - Team: Ops, Dev und QA können nicht alle auf dem Server grep-en
Empfehlung:
- Docker lernen? Erst
docker logssicher beherrschen - Solo oder kleines Team? Rotation +
docker logsist ok - Produktion mit 10+ Containern? Zentrales Logging planen
- Microservices? Zentrales Logging ist keine Option, sondern Basis
Fazit
Zurück zum Szenario um 3 Uhr nachts. Heute würde ich so vorgehen:
docker logs --tail 100 payment-service– schneller Blick auf das Neueste- Kein Treffer? Zeitfenster:
docker logs --since "2025-12-18T03:00:00" --until "2025-12-18T03:30:00" payment-service - Timestamp + grep:
docker logs -t payment-service 2>&1 | grep -i "error" | tail -20
Drei Schritte, höchstens zwei Minuten – Problem eingegrenzt.
Der Wert von docker logs liegt nicht darin, jeden Parameter auswendig zu kennen, sondern die passende Kombination für die Situation zu wählen.
Noch einmal: Läuft Ihr Container in Produktion – jetzt Log-Rotation einrichten. Die paar Zeilen Config können Sie vor voller Festplatte bewahren.
Kurzreferenz
# Basis
docker logs <Container-Name> # alle Logs
docker logs --tail 50 <Container-Name> # letzte 50 Zeilen
# Live
docker logs -f <Container-Name> # Live-Tracking
docker logs -f --tail 100 <Container-Name> # letzte 100 Zeilen + Live
# Zeitfilter
docker logs --since 1h <Container-Name> # letzte Stunde
docker logs --since "2025-12-18T03:00:00" <Container-Name> # ab Zeitpunkt
# Suche
docker logs -t <Container-Name> # Zeitstempel
docker logs <Container-Name> 2>&1 | grep -i "error" # Fehler suchen
docker logs <Container-Name> 2>&1 | grep -C 10 "error" # mit Kontext
# Fortgeschritten
docker inspect --format='{{.LogPath}}' <Container-Name> # Log-Dateipfad
docker logs <Container-Name> > log.txt # exportieren
Diese Karte lohnt sich zum Merken – beim nächsten Container-Incident greifen Sie direkt zum passenden Befehl.
7 Tipps für docker logs – vollständiger Leitfaden
Container-Probleme schnell eingrenzen – mit Live-Monitoring, Zeitfilter, grep-Suche, Log-Dateipfad und Best Practices für Produktion
⏱️ Estimated time: 15 min
- 1
Step 1: Grundlegende Log-Viewing-Techniken
Die einfachsten Befehle:
• docker logs container-name (alle Logs anzeigen)
• docker logs --tail=100 container-name (letzte 100 Zeilen)
• docker logs --tail=100 -f container-name (neueste 100 Zeilen und Live-Tracking)
Live-Logs:
• Mit -f Logs in Echtzeit verfolgen: docker logs -f payment-service
• Ähnlich wie tail -f – ideal zum Überwachen des Container-Status
• Mit Strg+C beenden
Formatierte Ausgabe:
• Mit --timestamps Zeitstempel anzeigen: docker logs --timestamps container-name
• Erleichtert die Zuordnung zum Zeitpunkt des Fehlers - 2
Step 2: Zeitfilter und grep-Suche
Zeitfilter:
• Mit --since Logs ab einem Zeitpunkt anzeigen:
docker logs --since 1h payment-service (letzte Stunde)
docker logs --since 2024-01-01T00:00:00 container-name (ISO-8601-Format)
• Mit --until Logs bis zu einem Zeitpunkt anzeigen
grep-Suche:
• Mit Pipe und grep filtern: docker logs container-name | grep ERROR
• Groß-/Kleinschreibung ignorieren: docker logs container-name | grep -i error
• Mit Regex suchen: docker logs container-name | grep -E 'ERROR|FATAL' - 3
Step 3: Log-Dateipfad und Best Practices für Produktion
Log-Dateipfad:
• Docker-Container-Logs liegen unter: /var/lib/docker/containers/<container-id>/<container-id>-json.log
• Container-ID per docker inspect ermitteln, dann Datei direkt lesen
Best Practices für Produktion:
• Log-Aggregation nutzen (ELK, Loki, Fluentd)
• Log-Rotation konfigurieren, damit Dateien nicht zu groß werden (logging in docker-compose.yml)
• Strukturiertes Log-Format (JSON)
• Log-Level filtern
• Alte Logs regelmäßig bereinigen: docker system prune für ungenutzte Logs
FAQ
Welche praktischen Tipps gibt es für docker logs?
1) Live-Logs: docker logs -f container-name
2) Letzte N Zeilen: docker logs --tail=100 container-name
3) Zeitfilter: docker logs --since 2024-01-01T00:00:00 container-name
4) grep-Suche: docker logs container-name | grep ERROR
5) Log-Dateipfad: /var/lib/docker/containers/
6) Formatierte Ausgabe: docker logs --timestamps container-name
7) Best Practices für Produktion: Log-Aggregation, Log-Rotation konfigurieren
Wie sehe ich Docker-Container-Logs in Echtzeit?
• Mit -f Logs verfolgen: docker logs -f payment-service
• Ähnlich wie tail -f
• Ideal zum Überwachen des Container-Status
• Mit Strg+C beenden
Neueste N Zeilen und Live-Tracking:
docker logs -f --tail 100 container-name
Zeigt zuerst die letzten 100 Zeilen, dann neue Logs in Echtzeit.
Wie filtere ich Docker-Logs nach Zeit?
Mit --since Logs ab einem Zeitpunkt anzeigen:
• docker logs --since 1h payment-service (letzte Stunde)
• Mit --until Logs bis zu einem Zeitpunkt
• ISO-8601-Zeitstempel: docker logs --since 2024-01-01T00:00:00 container-name
Gängige Zeitformate:
• 1h (letzte Stunde)
• 30m (letzte 30 Minuten)
• 2024-01-01T00:00:00 (fester Zeitpunkt)
Wo werden Docker-Log-Dateien gespeichert?
Docker-Container-Logs liegen unter /var/lib/docker/containers/<container-id>/<container-id>-json.log
So prüfen Sie das:
1) Container-ID per docker inspect:
docker inspect -f '{{.Id}}' container-name
2) Log-Datei direkt lesen:
cat /var/lib/docker/containers/<container-id>/<container-id>-json.log
Hinweis: Root-Rechte sind für den Zugriff erforderlich.
Wie verwalte ich Docker-Logs in Produktion?
1) Log-Aggregation (ELK, Loki, Fluentd)
2) Log-Rotation gegen zu große Dateien:
• logging in docker-compose.yml konfigurieren
• max-size und max-file setzen
3) Strukturiertes Log-Format (JSON)
4) Log-Level filtern
5) Alte Logs regelmäßig bereinigen (docker system prune)
Empfehlung: Log-Aggregation für zentrale Suche und Analyse aller Container-Logs.
7 Min. Lesezeit · Veröffentlicht am: 18. Dez. 2025 · Aktualisiert am: 14. Juli 2026
Docker Praxisleitfaden
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
Docker-Ressourcenlimits – vollständiger Leitfaden: Speicherlecks verhindern, bevor sie den Server lahmlegen
Wie Speicherlecks in Containern einen ganzen Server lahmlegen – und wie Sie das verhindern: von cgroups über --memory und --cpus bis zu docker stats, cAdvisor und Prometheus. Praxisleitfaden für Ressourcenlimits in der Produktion.
Teil 32 von 38
Nächster
Docker-Log-Bereinigung Komplettguide: 5 Methoden gegen json.log auf voller Festplatte
Wachsen Docker-Log-Dateien unbegrenzt und füllen die Festplatte? So bereinigen Sie json.log, konfigurieren Log-Rotation und wählen den passenden Log-Treiber – und verhindern erneutes Volllaufen.
Teil 34 von 38
Ähnliche Beiträge
Docker vs. virtuelle Maschine: Performance-Unterschiede und Szenario-Auswahl in 5 Minuten

Docker vs. virtuelle Maschine: Performance-Unterschiede und Szenario-Auswahl in 5 Minuten
Docker-Installation ohne Fallstricke (2025): Vollständige Lösungen von permission denied bis zum erfolgreichen Start


Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen