Direkt zum Hauptinhalt

Docker belegt verdammt viel Speicher

Beschreibung:

Auf einmal belegt Docker im /var/lib/docker verdammt viel Speicher.
Im overlay2 Verzeichnis wird folgendes gespeichert:

 

Das Docker Overlay-Verzeichnis ist Teil des OverlayFS (ein Union-Dateisystem), das Docker für seine Images und Container verwendet. Dieses Dateisystem ermöglicht es, dass mehrere Images Schichten teilen, um Speicherplatz zu sparen, und gleichzeitig die Änderungen, die in Containern gemacht werden, zu isolieren. Hier sind die Hauptkomponenten und Funktionen des Docker Overlay-Verzeichnisses:

  1. Image Layers: Jedes Docker-Image besteht aus mehreren Schichten (layers), die durch das OverlayFS zusammengefügt werden. Diese Schichten sind nur lesbare Dateien und Verzeichnisse.

  2. Writable Container Layer: Wenn ein Container gestartet wird, erstellt Docker eine neue schreibbare Schicht oben auf den Image-Schichten. Alle Änderungen, die im Container gemacht werden, etwa das Hinzufügen, Löschen oder Ändern von Dateien, werden in dieser schreibbaren Schicht gespeichert.

  3. Volume Data: Volumes, die für die dauerhafte Speicherung von Daten verwendet werden, können ebenfalls im Overlay-Verzeichnis gespeichert werden, abhängig von der Konfiguration.

Wenn das Docker Overlay-Verzeichnis unerwartet groß wird, kann das mehrere Ursachen haben:

  • Alte Container und Images: Nicht mehr verwendete Container und Images können immer noch Speicherplatz belegen. Sie können alte Container und Images mit Befehlen wie docker container prune, docker image prune oder docker system prune aufräumen.

  • Log-Dateien: Manchmal können Container-Log-Dateien viel Platz einnehmen. Diese befinden sich normalerweise im Verzeichnis /var/lib/docker/containers/<container-id>/ und können sicher gelöscht werden, wenn sie nicht mehr benötigt werden.

  • Volumes und Netzwerke: Nicht gelöschte Volumes und Netzwerke können ebenfalls Speicherplatz beanspruchen.

  • Dangling Layers: Gelegentlich bleiben bei der Erstellung und Löschung von Containern und Images "herrenlose" Schichten zurück, die nicht mehr verwendet werden. Diese können mit docker system prune entfernt werden.

Es ist wichtig, regelmäßige Wartungen durchzuführen und nicht benötigte Container, Images, Volumes und Netzwerke zu entfernen, um sicherzustellen, dass das Overlay-Verzeichnis nicht unnötig groß wird.

Kürzübersicht der Befehle

alte nicht laufende container aufräumen
docker container prune

alte image wegräumen die nicht benötigt werden
docker image prune

will mann alles auf einmal durchführen
docker system prune