Docker Logs anzeigen und verwalten – Anleitung

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 Logs eines einzelnen Containers rufst du mit dem Befehl docker logs und dem Containernamen oder der ID auf:

docker logs mein-container

Docker 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:

OptionWirkung
-f / --followLogs live mitverfolgen (wie tail -f)
--tail 100Nur die letzten 100 Zeilen anzeigen
--since 10mNur Einträge der letzten 10 Minuten
--until 2026-01-01Nur Einträge bis zu einem Zeitpunkt
-t / --timestampsJeder 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-container

Logs 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 web

Die 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 docker

Alternativ 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.

TreiberEinsatzzweck
json-fileStandard, lokal, docker logs funktioniert
localKompakter, rotiert automatisch, empfohlen ab neueren Versionen
journaldIntegration in systemd-journal des Hosts
syslog / fluentdWeiterleitung 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 rm gelö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.

Siehe auch  unRaid-Server nur mit ZFS betreiben
Nach oben scrollen