- Beim Betrieb von Services auf Linux-Servern, auf denen Anwendungen mit Docker bereitgestellt werden, kann es vorkommen, dass eine Meldung über zu wenig Speicherplatz auf der Festplatte erscheint
- Selbst wenn die von der eigentlichen Anwendung erzeugten und gespeicherten Daten sowie die Logs nicht sehr groß sind, kann der gesamte Systemspeicher voll werden
- Eine der Ursachen für Speicherplatzmangel bei der Verwendung von Docker sind die „Docker-Container-Logs“
- Docker-Logging-Treiber und Speicherort der Logs
- Logging-Treiber: Docker enthält einen Logging-Mechanismus, der dabei hilft, Informationen aus laufenden Containern und Services zu erhalten; das ist der Logging-Treiber
- Befehl
docker logs: Zeigt die von einem laufenden Container aufgezeichneten Informationen an
- Befehl
docker service logs: Zeigt die von allen Containern aufgezeichneten Informationen an, die an einem Service beteiligt sind
- Docker verwendet den Logging-Treiber
json-file, der die Standardausgabe (stdout) oder Standardfehlerausgabe (stderr) aller Container-Logs erfasst und in eine Datei im JSON-Format schreibt
- Wenn ein Docker-Container mit dem Befehl
docker run oder docker-compose up gestartet wird, wird die Datei /var/lib/docker/containers/[Container-ID]/[Container-ID]-json.log erstellt und das Log darin gespeichert
- Der Logging-Treiber
json-file führt keine Log-Rotation durch
- Wenn ein Container viele Ausgaben erzeugt, können die mit diesem Logging-Treiber gespeicherten Log-Dateien erheblichen Festplattenspeicher belegen, was schließlich zum Ausgehen des Speicherplatzes führen kann
- Größe von Docker-Container-Logs verringern
- Wird der Befehl
docker rm oder docker-compose down ausgeführt, wird der Docker-Container gelöscht, ebenso das Verzeichnis für die jeweilige [Container-ID] unter /var/lib/docker/containers
- Dadurch wird auch die Datei
[Container-ID]-json.log, die viel Speicherplatz belegt hat, zusammen gelöscht und es wird wieder Festplattenspeicher auf Systemebene frei
- Mit dem Befehl
truncate -s 0 <json-log-file> kann die Größe der Log-Datei auf 0 gesetzt werden
- Log-Rotation konfigurieren
- Durch das Festlegen der maximalen Log-Dateigröße (
max-size) und der maximalen Anzahl von Dateien (max-file) kann die Log-Rotation aktiviert werden
- Wenn die Dateigröße den eingestellten Maximalwert erreicht, wird auf eine neue Datei gewechselt; bestehende Dateien werden als
...-json.log.1, ...-json.log.2 usw. bis zur festgelegten Höchstzahl angelegt
- Wird diese überschritten, wird die älteste Datei entfernt, sodass die Größe der Docker-Container-Log-Dateien nicht unbegrenzt anwächst
Noch keine Kommentare.