Ein Container tut nicht, was er soll? Der erste Blick geht immer in die Logs. In dieser Anleitung zeigen wir dir, wie du Docker Logs anzeigst und verwaltest – vom Live-Mitlesen über das Filtern nach Zeit bis zur Log-Rotation, damit dir die Protokolle nicht die Festplatte volllaufen lassen.
Ob beim Debuggen einer abgestürzten Anwendung oder beim Beobachten des laufenden Betriebs – die Container-Logs sind deine wichtigste Informationsquelle. Docker sammelt jede Ausgabe deiner Anwendung zentral ein, sodass du Fehlermeldungen, Warnungen und Statusmeldungen an einer Stelle findest. In diesem Guide lernst du nicht nur das Anzeigen der Protokolle, sondern auch, wie du sie gezielt filterst, dauerhaft begrenzt und bei Bedarf an ein zentrales Logging-System weiterleitest.
- Die Grundlagen: docker logs
- Die wichtigsten Optionen
- Logs eines ganzen Compose-Stacks
- Wohin schreibt Docker die Logs?
- Log-Rotation einrichten
- Logs gezielt durchsuchen und weiterverarbeiten
- Log-Treiber im Vergleich
- Typische Stolperfallen beim Debugging
- Häufige Fragen
- Wie lösche ich die Logs eines laufenden Containers?
- Warum wächst meine Festplatte trotz gelöschter Container?
- Kann ich Logs mehrerer Container gleichzeitig sehen?
- Fazit
Die Grundlagen: docker logs
Die Logs eines einzelnen Containers rufst du mit dem Befehl docker logs und dem Containernamen oder der ID auf:
docker logs mein-containerDocker gibt dir damit alles aus, was der Hauptprozess des Containers auf die Standardausgabe (stdout) und die Fehlerausgabe (stderr) geschrieben hat. Genau diese beiden Ströme sammelt Docker automatisch ein. Wenn du dir zunächst unsicher bist, wie Container grundsätzlich funktionieren, hilft Was ist Docker?.
Die wichtigsten Optionen
Selten willst du das komplette Log am Stück. Diese Optionen machen die Ausgabe brauchbar:
| Option | Wirkung |
|---|---|
-f / --follow | Logs live mitverfolgen (wie tail -f) |
--tail 100 | Nur die letzten 100 Zeilen anzeigen |
--since 10m | Nur Einträge der letzten 10 Minuten |
--until 2026-01-01 | Nur Einträge bis zu einem Zeitpunkt |
-t / --timestamps | Jeder Zeile einen Zeitstempel voranstellen |
In der Praxis kombinierst du sie. Dieser Befehl zeigt die letzten 50 Zeilen und folgt dann live mit Zeitstempeln:
docker logs -f --tail 50 -t mein-containerLogs eines ganzen Compose-Stacks
Betreibst du mehrere Container per Compose, willst du oft alle Logs gemeinsam sehen. Führe im Projektverzeichnis mit der docker-compose.yml aus:
# Logs aller Dienste live mitlesen
docker compose logs -f
# Nur einen bestimmten Dienst
docker compose logs -f webDie Grundlagen dazu findest du in Docker Compose installieren. Bei typischen Startproblemen hilft zusätzlich Die 10 häufigsten Docker-Fehler.
Wohin schreibt Docker die Logs?
Standardmäßig nutzt Docker den Log-Treiber json-file. Die Protokolle liegen als JSON-Dateien unter /var/lib/docker/containers/<container-id>/. Das ist wichtig zu wissen, denn: Diese Dateien wachsen unbegrenzt, solange du nichts dagegen unternimmst – ein häufiger Grund für volle Festplatten.
Log-Rotation einrichten
Damit die Logs nicht ausufern, begrenzt du ihre Größe. Am einfachsten global über die Docker-Konfiguration. Lege oder ergänze /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}Das behält pro Container maximal drei Dateien à 10 MB. Starte anschließend den Docker-Dienst neu, damit die Einstellung greift (gilt für neu erstellte Container):
sudo systemctl restart dockerAlternativ setzt du das pro Dienst direkt in der docker-compose.yml:
services:
web:
image: nginx:latest
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"Logs gezielt durchsuchen und weiterverarbeiten
In der Praxis interessiert dich selten das komplette Protokoll, sondern nur eine bestimmte Fehlermeldung. Da docker logs nach stdout schreibt, kannst du die Ausgabe direkt an klassische Unix-Werkzeuge weiterreichen. Mit docker logs mein-container 2>&1 | grep -i error filterst du zum Beispiel alle Zeilen heraus, die das Wort „error“ enthalten. Wichtig ist dabei das 2>&1, denn viele Programme schreiben Fehler nach stderr statt nach stdout.
Für wiederkehrende Analysen lohnt sich ein Blick auf Kombinationen: docker logs --since 1h mein-container | tail -n 100 zeigt dir die letzten 100 Zeilen der vergangenen Stunde. So grenzt du Probleme zeitlich ein, ohne im gesamten Log zu ertrinken.
Log-Treiber im Vergleich
Docker unterstützt neben dem Standard json-file mehrere Log-Treiber. Welcher passt, hängt von deiner Umgebung ab – auf einem einzelnen Homeserver reicht der Standard, in größeren Setups willst du Logs zentral sammeln.
| Treiber | Einsatzzweck |
|---|---|
json-file | Standard, lokal, docker logs funktioniert |
local | Kompakter, rotiert automatisch, empfohlen ab neueren Versionen |
journald | Integration in systemd-journal des Hosts |
syslog / fluentd | Weiterleitung an zentrale Logging-Server |
Beachte: Wechselst du auf syslog oder fluentd, funktioniert docker logs nicht mehr, weil die Daten den Host verlassen. Für die meisten Selfhosting-Szenarien ist local oder json-file mit Rotation die beste Wahl.
Typische Stolperfallen beim Debugging
Wenn docker logs nichts ausgibt, liegt das oft daran, dass die Anwendung ihre Ausgaben in eine Datei innerhalb des Containers schreibt statt nach stdout. Docker sieht davon nichts. Konfiguriere das Programm so, dass es auf die Konsole loggt – bei nginx etwa durch Weiterleitung des Access-Logs nach /dev/stdout.
- Container bereits gestoppt? Logs bleiben abrufbar, solange der Container nicht mit
docker rmgelöscht wurde. - Zeitstempel wirken falsch? Prüfe die Zeitzone des Hosts, Docker nutzt standardmäßig UTC.
- Zu viel Rauschen? Erhöhe den Log-Level der Anwendung erst, wenn du wirklich tief debuggst.
Häufige Fragen
Kurz und knapp die Fragen, die beim Umgang mit Docker-Logs am häufigsten auftauchen.
Wie lösche ich die Logs eines laufenden Containers?
Du kannst die zugehörige JSON-Datei unter /var/lib/docker/containers/<id>/ leeren (truncate -s 0), ohne den Container zu stoppen. Sauberer ist jedoch eine konfigurierte Log-Rotation, damit du das nicht manuell tun musst.
Warum wächst meine Festplatte trotz gelöschter Container?
Solange ein Container existiert, bleiben seine Logs bestehen. Ungenutzte Container samt Logs entfernst du mit docker container prune. Prüfe zusätzlich, ob die Rotation greift.
Kann ich Logs mehrerer Container gleichzeitig sehen?
Ja, mit Docker Compose über docker compose logs -f siehst du alle Dienste eines Stacks gebündelt. Für einzelne, nicht per Compose gestartete Container brauchst du separate Terminalfenster oder ein Tool wie Portainer.
Fazit
Mit docker logs und den Optionen -f, --tail und --since findest du Fehlerursachen schnell. Genauso wichtig ist die Log-Rotation: Ohne Begrenzung fressen Protokolle mit der Zeit den Speicher. Läuft die Platte trotzdem voll, hilft dir das Aufräumen ungenutzter Docker-Ressourcen. Komfortabler wird die Log-Ansicht übrigens mit einer Weboberfläche wie Portainer.

