Skip to main content

Logs in Docker begrenzen

Ah ja, das Problem kenne ich – Docker schreibt die Container-Logs standardmäßig unlimitiert in JSON-Dateien unter /var/lib/docker/containers/<container-id>/<container-id>-json.log.
Wenn du viele Container laufen hast, können die sehr schnell die Platte volllaufen.


🔧 Lösung: Log-Rotation aktivieren

Docker bringt das schon mit, du musst nur das Logging-Driver konfigurieren.

1. Global (für alle Container)

Du kannst in /etc/docker/daemon.json (oder erstellen, falls nicht existiert) Folgendes setzen:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
  • max-size: maximale Größe einer einzelnen Logdatei (z. B. 10 MB)

  • max-file: wie viele rotierte Logdateien behalten werden (z. B. 3 → max. 30 MB pro Container)

Danach Docker neu starten:

sudo systemctl restart docker

2. Nur für einen bestimmten Container

Beim Start eines Containers:

docker run -d \
  --name mein-container \
  --log-driver=json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx

3. Alternative Logging-Driver

Wenn du Logs nicht auf der Platte haben willst, kannst du auch andere Treiber nehmen, z. B. syslog, journald oder none.
Beispiel (Logs nur ins Journal):

docker run -d \
  --log-driver=journald \
  nginx

👉 Empfehlung: Setz am besten die globale Einstellung in daemon.json, dann musst du dich um einzelne Container nicht mehr kümmern.


Willst du, dass ich dir auch ein kleines Einmal-Skript bastle, das deine bestehenden übergroßen Logdateien automatisch kürzt oder leert, damit du gleich wieder Platz bekommst?