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
- Speicherverbrauch analysieren
- Gezielt aufräumen
- Alles auf einmal: docker system prune
- Vorsicht bei Volumes
- Automatisch aufräumen
- Container-Logs als versteckter Speicherfresser
- Sicher aufräumen ohne Datenverlust
- Ergebnis nach dem Aufräumen prüfen
- Häufige Fragen
- Löscht docker system prune meine Volumes?
- Wie entferne ich alle ungenutzten Images auf einmal?
- Kann ich das Aufräumen automatisieren?
- Fazit
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 dfFür eine detaillierte Aufschlüsselung pro Objekt hängst du -v an:
docker system df -vGezielt aufräumen
Wer die Kontrolle behalten will, räumt einzeln auf. Diese Befehle entfernen jeweils nur ungenutzte Objekte:
| Befehl | Entfernt |
|---|---|
docker container prune | Alle gestoppten Container |
docker image prune | Ungenutzte „dangling“ Images (ohne Tag) |
docker image prune -a | Alle Images, die von keinem Container genutzt werden |
docker network prune | Ungenutzte Netzwerke |
docker builder prune | Den 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 pruneStandardmäß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 -aVorsicht 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 --volumesNutze 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>&1Wie 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.jsonz. 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.
| Befehl | Risiko |
|---|---|
docker container prune | Gering – nur gestoppte Container |
docker image prune -a | Mittel – lädt Images ggf. neu herunter |
docker system prune --volumes | Hoch – 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.

