Docker-Logs automatisch begrenzen¶
Veröffentlicht am 27. August 2026 · Geschätzte Lesezeit: 3 Minuten
Container schreiben ihre Ausgaben normalerweise in Protokolldateien. Ohne Begrenzung kann ein gesprächiger oder fehlerhafter Dienst damit nach und nach die Festplatte füllen. Der Docker-Logtreiber local rotiert und komprimiert diese Daten automatisch. Die Umstellung dauert etwa 10 Minuten und gilt nach dem Neuerstellen der Container.
Voraussetzungen
- Ein Linux-Server mit Docker Engine und Docker Compose
- Ein Benutzerkonto mit
sudo-Rechten - Etwa 10 Minuten Wartungszeit für den Docker-Neustart
- Eine Sicherung der vorhandenen Docker-Konfiguration
1. Aktuellen Logtreiber prüfen¶
Führe den Befehl auf dem Docker-Server aus. Er zeigt den derzeitigen Standard-Logtreiber an:
Zeigt die Ausgabe json-file, ist ohne zusätzliche Optionen keine automatische Größenbegrenzung aktiv. Einzelne Container können trotzdem abweichend konfiguriert sein.
Prüfe deshalb zusätzlich einen laufenden Container. Ersetze <container-name> durch seinen Namen, zum Beispiel homeassistant:
docker inspect --format '{{.HostConfig.LogConfig.Type}} {{json .HostConfig.LogConfig.Config}}' <container-name>
2. Docker-Konfiguration sichern¶
Lege vor der Änderung eine Sicherung an. Der Befehl kopiert eine vorhandene daemon.json; falls sie noch nicht existiert, erscheint nur ein Hinweis:
Datei noch nicht vorhanden?
Meldet cp, dass die Datei nicht existiert, ist das bei einer Standardinstallation normal. Überspringe die Sicherung und lege die Datei im nächsten Schritt neu an.
3. Vorhandene Einstellungen erhalten¶
Öffne die Docker-Daemon-Konfiguration auf dem Server:
Ist die Datei leer oder noch nicht vorhanden, füge diesen vollständigen Inhalt ein. Die Werte begrenzen jeden neu erstellten Container auf fünf komprimierte Logdateien mit jeweils höchstens 20 MB:
Enthält die Datei bereits Einstellungen, ergänze nur log-driver und log-opts innerhalb der vorhandenen äußeren geschweiften Klammern. Doppelte Schlüssel oder ein fehlendes Komma machen die JSON-Datei ungültig.
Keine vorhandenen Einstellungen überschreiben
Ein blindes Ersetzen kann andere Docker-Optionen wie eigene Datenverzeichnisse, Registry-Mirrors oder Netzwerkbereiche entfernen. Bearbeite eine vorhandene Datei deshalb immer als Ganzes.
4. JSON und Docker-Konfiguration prüfen¶
Prüfe zuerst die JSON-Syntax. Eine erfolgreiche Prüfung gibt den formatierten Inhalt aus:
Lass danach Docker die vollständige Daemon-Konfiguration validieren:
Erst wenn configuration OK erscheint, solltest du fortfahren.
5. Docker neu starten¶
Der Neustart unterbricht alle Container kurz. Führe ihn deshalb zu einem passenden Zeitpunkt aus:
Prüfe anschließend den Dienst und den neuen Standardtreiber:
Die zweite Ausgabe muss jetzt local lauten.
Docker startet nicht mehr
Stelle die Sicherung wieder her und starte Docker erneut. Wenn vorher keine daemon.json existierte, verschiebe stattdessen die fehlerhafte Datei aus dem Weg.
6. Bestehende Container neu erstellen¶
Die Änderung wirkt nur auf neu erstellte Container. Wechsle in jeden Compose-Projektordner und erstelle die Container neu. Volumes und darin gespeicherte Nutzdaten bleiben dabei erhalten:
Vorher Backup prüfen
--force-recreate löscht keine benannten Volumes. Trotzdem solltest du vor Änderungen an wichtigen Diensten ein aktuelles Backup ihrer Daten und Compose-Dateien haben. Verwende hier nicht docker compose down -v, denn -v würde Volumes löschen.
Kontrolliere danach einen neu erstellten Container. Ersetze <container-name> erneut durch den tatsächlichen Namen:
docker inspect --format '{{.HostConfig.LogConfig.Type}} {{json .HostConfig.LogConfig.Config}}' <container-name>
Die Ausgabe sollte den Treiber local zeigen. Leere Optionen sind möglich, weil dann die in daemon.json gesetzten Standardwerte gelten.
7. Logs weiter benutzen¶
Die gewohnten Docker-Befehle funktionieren mit dem local-Treiber weiterhin. Dieser Befehl zeigt beispielsweise die letzten 100 Zeilen:
Greife nicht direkt auf Logdateien unter dem Docker-Datenverzeichnis zu. Diese Dateien verwaltet ausschließlich der Docker-Daemon; direktes Bearbeiten kann die Protokollierung beschädigen.
8. Quellen und Stand¶
Die Konfiguration wurde am 27. August 2026 mit der offiziellen Dokumentation abgeglichen:
Fertig¶
Neue Container verwenden jetzt automatisch rotierende, komprimierte Logs. Prüfe mit docker info --format '{{.LoggingDriver}}' den Standard und mit docker logs --tail 100 <container-name>, ob die Ausgabe eines neu erstellten Containers weiterhin lesbar ist.