Docker Logging konfigurieren: json-file, journald und logrotate

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)
  • copytruncate erlaubt 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-file mit max-size und max-file einsetzen
  • Bei zentraler Logverwaltung journald oder syslog nutzen
  • 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.

Related Articles