Zum Inhalt springen
Linux, DevOps & Systeme

Docker Speicherplatz freigeben

Docker Speicherplatz freigeben: mit docker system df die Belegung sehen und mit prune ungenutzte Images, Container, Volumes, Netzwerke und Build-Cache löschen.

Von DI Herwart Wermescher, MBA ↗

Docker frisst mit der Zeit überraschend viel Plattenplatz: alte Images, gestoppte Container, verwaiste Volumes und ein wachsender Build-Cache summieren sich. Mit ein paar Befehlen räumst Du gezielt auf. Dieser Beitrag vertieft den Docker-Teil aus meinem Artikel Einfache Wege, um unter Linux/Ubuntu Speicherplatz freizugeben.

Schneller Überblick: docker system df zeigt, was belegt ist, und docker system prune -a --volumes räumt alles Ungenutzte auf einen Schlag weg. Gezielter geht es mit den einzelnen prune-Befehlen unten.

Was belegt den Platz? — docker system df

docker system df

Das listet Images, Container, lokale Volumes und den Build-Cache mit ihrer Größe und dem „reclaimable” (rückgewinnbaren) Anteil auf. Mit docker system df -v siehst Du die Aufschlüsselung pro Image und Volume.

Ungenutzte Images entfernen

docker image prune        # nur "dangling" (ungetaggte) Images
docker image prune -a     # ALLE Images, die kein Container nutzt

docker image prune löscht standardmäßig nur dangling images — ungetaggte Layer ohne Bezug. Mit -a entfernst Du alle Images, die gerade von keinem Container verwendet werden. Das gibt am meisten frei, lädt aber beim nächsten Start neu herunter.

Gestoppte Container entfernen

docker container prune

Entfernt alle gestoppten Container. Laufende bleiben unberührt.

Ungenutzte Volumes entfernen

docker volume prune

Achtung: Volumes enthalten oft Daten (Datenbanken, Uploads). docker volume prune löscht nur Volumes, die an keinem Container hängen — prüfe vorher mit docker volume ls, dass nichts Wichtiges dabei ist.

Build-Cache leeren

docker builder prune        # alten Build-Cache
docker builder prune -a     # den gesamten Build-Cache

Gerade bei häufigen docker build-Läufen wächst der Cache stark. Das ist meist die größte stille Platzfresser-Quelle.

Alles auf einmal

docker system prune              # Container, Netzwerke, dangling Images, Build-Cache
docker system prune -a --volumes # zusätzlich ALLE ungenutzten Images UND Volumes

Der zweite Befehl ist der große Hammer: Er räumt radikal auf, löscht aber auch alle ungenutzten Images und — durch --volumes — ungenutzte Volumes mitsamt Daten. Nutze ihn nur, wenn Du weißt, dass nichts Ungesichertes dranhängt. Das -f-Flag überspringt die Sicherheitsabfrage.

Container-Logs im Blick behalten

Auch Logfiles laufender Container können groß werden. Prüfen lässt sich das z. B. unter /var/lib/docker/containers/. Dauerhaft hilft eine Begrenzung über die Log-Optionen (max-size, max-file) im docker run oder in der daemon.json.

Wenn Du Docker als lokale Entwicklungsumgebung nutzt, ist auch mein Beitrag MySQL, phpMyAdmin und Mailhog lokal auf Docker interessant.

Themen

Über diesen Blog

Ein Sammelsurium an Denkanstößen.

Hier sammle ich Wissen, Argumente und Links zu allem, was mich beschäftigt — von Technik über Küche bis Nachhaltigkeit. Beruflich berate ich zu Cybersecurity.