Docker aufräumen: Speicherplatz freigeben mit prune

Die Festplatte läuft voll und Docker ist der Übeltäter? Mit der Zeit sammeln sich ungenutzte Images, gestoppte Container und verwaiste Volumes an. In dieser Anleitung zeigen wir dir, wie du Docker aufräumst und Speicherplatz freigibst – gezielt und kontrolliert oder in einem Rutsch mit docker system prune. Du lernst außerdem, wie du ungenutzte Images, Container und Volumes gefahrlos entfernst, den Speicherverbrauch analysierst und das Aufräumen dauerhaft automatisierst.

Warum Docker so viel Speicher belegt

Jedes heruntergeladene Image, jeder gestoppte Container und jedes Volume belegt Platz. Besonders Images summieren sich schnell: Bei jedem Update lädst du eine neue Version, während die alte oft ungenutzt liegen bleibt. Auch der Build-Cache und Logs wachsen mit der Zeit. Das Ergebnis: Nach Monaten Betrieb belegen „Leichen“ mehrere Gigabyte.


Speicherverbrauch analysieren

Bevor du löschst, verschaffe dir einen Überblick. Der folgende Befehl zeigt, wie viel Platz Images, Container, Volumes und der Build-Cache belegen – und wie viel davon wiederverwertbar ist:

docker system df

Für eine detaillierte Aufschlüsselung pro Objekt hängst du -v an:

docker system df -v

Gezielt aufräumen

Wer die Kontrolle behalten will, räumt einzeln auf. Diese Befehle entfernen jeweils nur ungenutzte Objekte:

BefehlEntfernt
docker container pruneAlle gestoppten Container
docker image pruneUngenutzte „dangling“ Images (ohne Tag)
docker image prune -aAlle Images, die von keinem Container genutzt werden
docker network pruneUngenutzte Netzwerke
docker builder pruneDen Build-Cache

Ein häufiger Speicherfresser sind alte Images. Mit docker image prune -a wirst du alle los, die gerade von keinem laufenden Container gebraucht werden.


Alles auf einmal: docker system prune

Willst du in einem Schritt aufräumen, nutzt du docker system prune. Es entfernt gestoppte Container, ungenutzte Netzwerke, dangling Images und den Build-Cache:

docker system prune

Standardmäßig bleiben Volumes und getaggte, ungenutzte Images verschont. Um wirklich alles Ungenutzte inklusive solcher Images zu löschen, ergänzt du -a:

docker system prune -a

Vorsicht bei Volumes

Ein wichtiger Hinweis: Volumes enthalten deine Daten. Der Befehl docker system prune löscht standardmäßig keine Volumes. Erst mit dem zusätzlichen Flag --volumes werden auch ungenutzte Volumes entfernt – und damit womöglich deine Datenbank-Inhalte:

# ACHTUNG: löscht auch ungenutzte Volumes samt Daten!
docker system prune -a --volumes

Nutze dieses Flag nur, wenn du sicher bist, dass die betroffenen Volumes wirklich nicht mehr gebraucht werden. Was Volumes genau sind, erklärt Docker Volumes: Daten dauerhaft speichern.


Automatisch aufräumen

Damit die Platte gar nicht erst vollläuft, kannst du das Aufräumen automatisieren. Ein regelmäßiger Cronjob erledigt das ganz von selbst:

# Jeden Sonntag um 3 Uhr ungenutzte Images und Container entfernen
0 3 * * 0 /usr/bin/docker system prune -af >> /var/log/docker-prune.log 2>&1

Wie du solche Zeitpläne einrichtest, steht in Cronjobs unter Linux mit crontab einrichten. Nutzt du Watchtower, übernimmt dessen Option WATCHTOWER_CLEANUP zusätzlich das Entfernen alter Images nach jedem Update.


Container-Logs als versteckter Speicherfresser

Ein oft übersehener Grund für volle Platten sind die Logdateien laufender Container. Standardmäßig schreibt Docker sie unbegrenzt in JSON-Dateien unter /var/lib/docker/containers/. Ein gesprächiger Dienst kann so über Wochen mehrere Gigabyte ansammeln. Begrenze das global in der Datei /etc/docker/daemon.json über die Optionen max-size und max-file, damit Docker die Logs automatisch rotiert.

  • Prüfe die Größe einzelner Logs mit du -sh /var/lib/docker/containers/*/*-json.log.
  • Setze in daemon.json z. B. "max-size": "10m" und "max-file": "3".
  • Nach dem Anpassen musst du die betroffenen Container neu erstellen, damit die Rotation greift.

Sicher aufräumen ohne Datenverlust

Die prune-Befehle sind mächtig, löschen im Zweifel aber mehr, als dir lieb ist. Halte dich deshalb an eine einfache Reihenfolge: erst analysieren, dann gezielt löschen, Volumes zuletzt und nur bewusst. Der entscheidende Unterschied liegt beim -a-Flag: docker image prune entfernt nur namenlose „dangling“ Images, docker image prune -a dagegen alle Images, die gerade von keinem laufenden Container gebraucht werden – auch solche, die du bald wieder brauchst.

BefehlRisiko
docker container pruneGering – nur gestoppte Container
docker image prune -aMittel – lädt Images ggf. neu herunter
docker system prune --volumesHoch – kann Datenbank-Daten löschen

Ergebnis nach dem Aufräumen prüfen

Nach dem Aufräumen lohnt ein Kontrollblick. Mit docker system df siehst du sofort, wie viel Platz du zurückgewonnen hast. Auf Systemebene zeigt dir df -h, ob die Root-Partition wieder Luft hat. Bleibt der Speicher trotz Aufräumen knapp, steckt die Ursache oft in großen Volumes oder außerhalb von Docker – dann hilft eine systematische Analyse mit ncdu /. Behalte den Verlauf im Blick: Wächst der belegte Platz nach jedem Update wieder stark an, ist ein automatisches Aufräumen per Cronjob die nachhaltigere Lösung als gelegentliches manuelles Löschen.


Häufige Fragen

Löscht docker system prune meine Volumes?

Nein, standardmäßig nicht. Volumes bleiben verschont, solange du nicht ausdrücklich das Flag --volumes ergänzt. Genau deshalb ist der Basisbefehl vergleichsweise ungefährlich.

Wie entferne ich alle ungenutzten Images auf einmal?

Mit docker image prune -a löschst du sämtliche Images, die von keinem Container verwendet werden. Das gibt oft am meisten Platz frei, lädt benötigte Images beim nächsten Start aber neu herunter.

Kann ich das Aufräumen automatisieren?

Ja. Ein Cronjob mit docker system prune -af hält den Host dauerhaft schlank. Achte darauf, das --volumes-Flag im Automatismus wegzulassen, damit keine Daten verloren gehen.


Fazit

Mit docker system df behältst du den Überblick und mit den prune-Befehlen gibst du gezielt oder umfassend Speicher frei. Merke dir vor allem eines: Volumes werden nur mit dem ausdrücklichen Flag --volumes gelöscht – hier ist Vorsicht geboten. Automatisierst du das Aufräumen per Cron, bleibt dein Docker-Host dauerhaft schlank. Ein weiterer heimlicher Speicherfresser sind ausufernde Container-Logs. Den gesamten Speicherplatz analysierst du systematisch mit df, du und ncdu. Weitere Stolperfallen behandelt Die 10 häufigsten Docker-Fehler.

Siehe auch  Synology: ICMP-Pings in der Firewall erlauben
Nach oben scrollen