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?