Die Konfiguration von Docker Logging ist entscheidend, um die Ausgabe von Container-Logs effizient zu verwalten und Speicherressourcen zu schonen. Docker unterstützt verschiedene Logging-Treiber wie json-file und journald, die sich für unterschiedliche Szenarien eignen. In Kombination mit logrotate lassen sich Logdateien automatisch rotieren und alte Einträge löschen. Dieses Tutorial zeigt, wie Sie Docker Logging konfigurieren, überwachen und beständig betreiben.
Docker Logging-Treiber im Überblick
Docker bietet mehrere Logging-Treiber:
- json-file: Standardtreiber, speichert Logs als JSON-Dateien auf dem Host
- journald: Leitet Logs direkt an systemd journal weiter
- syslog: Leitet Logs an den Syslog-Dienst
- fluentd: Weiterleitung an Fluentd für zentrale Logging-Lösungen
- gelf, awslogs, splunk: Für zentrale Logging- und Monitoring-Plattformen
json-file konfigurieren
Der json-file-Treiber ist einfach zu nutzen und unterstützt Optionen wie Größenlimit und Rotation.
services:
web:
image: nginx:latest
container_name: web
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
ports:
- "80:80"
max-size: Maximale Größe einer Logdatei (z. B. 10 MB)max-file: Anzahl rotierender Dateien, bevor alte gelöscht werden- Begrenzt Speicherverbrauch und verhindert unkontrolliertes Wachstum
journald als Logging-Treiber
Mit journald werden Logs an das systemd Journal weitergeleitet, was zentrale Logverwaltung ermöglicht.
services:
api:
image: myorg/api-service:latest
logging:
driver: "journald"
environment:
- LOG_LEVEL=info
- Systemweite zentrale Speicherung über
journalctl - Unterstützt strukturierte Logs und Filterung nach Units, Priorität und Zeit
- Keine separate Rotation nötig, da systemd Journal automatisch verwaltet
Logrotation mit logrotate
Für json-file-Logs empfiehlt sich eine zusätzliche Rotation über logrotate:
/etc/logrotate.d/docker-containers
/var/lib/docker/containers/*/*.log {
rotate 7
daily
compress
missingok
notifempty
copytruncate
}
- Logs werden täglich rotiert (
daily) - Komprimierung spart Speicher (
compress) - Bis zu 7 alte Logdateien behalten (
rotate 7) copytruncateerlaubt Rotation, während Docker weiter schreibt
Docker Daemon Logging konfigurieren
Docker kann standardmäßig einen globalen Logging-Treiber festlegen, um konsistente Einstellungen zu gewährleisten:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}
Die Datei /etc/docker/daemon.json ändern und den Docker-Daemon neu starten:
sudo systemctl restart docker
Praktische Beispiele
Logs eines Containers anzeigen
docker logs -f web
docker logs -f api
Logs mit Filterung und Tail
docker logs --tail 100 -f web
Überwachung von journald-Logs
journalctl -u docker -f
journalctl CONTAINER_NAME=api -f
Best Practices
- Für produktive Systeme
json-filemitmax-sizeundmax-fileeinsetzen - Bei zentraler Logverwaltung
journaldodersyslognutzen - Logrotate konfigurieren, um Speicherplatz zu schonen
- Healthchecks und Monitoring ergänzen, um fehlerhafte Container frühzeitig zu erkennen
- Versionierte Images verwenden, um bei Updates konsistente Log-Einstellungen zu behalten
- Separate Netzwerke für Microservices nutzen, um Logs gezielt zu sammeln
- Regelmäßige Backup-Strategien für wichtige Logs implementieren
Updatefähigkeit und Wartung
Logging-Einstellungen bleiben nach Container-Updates erhalten, solange Volumes und globale Daemon-Optionen bestehen. Neue Images können per Pull aktualisiert werden:
docker-compose pull
docker-compose up -d
Zusammenfassung
Die Konfiguration von Docker Logging ist entscheidend für die Stabilität und Überwachung von Container-Umgebungen. Mit json-file, journald und logrotate lassen sich Logs effizient verwalten, Speicherverbrauch begrenzen und zentrale Auswertungen ermöglichen. In Kombination mit Healthchecks, Restart Policies und Resource Limits entsteht eine robuste, wartbare Container-Infrastruktur.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











