Docker prune auf dem Mac: Speicherplatz freigeben ohne Datenverlust
Führe docker system df aus, um zu sehen, was sich zurückholen lässt, und dann docker system prune, um gestoppte Container, ungenutzte Netzwerke, verwaiste Images und ungenutzten Build-Cache zu entfernen. Füge -a nur hinzu, wenn du Images erneut herunterladen willst, und --volumes nur, wenn du weißt, was in deinen anonymen Volumes liegt. Auf dem Mac liegt all das in einem einzigen Disk-Image von Docker Desktop: Lösche Daten also mit Docker-Befehlen und fass diese Datei nie an.
Docker Desktop auf dem Mac führt Linux in einer kleinen virtuellen Maschine aus. Jedes Image, das du ziehst, jeder Container, den du stoppst, und jeder Layer, den du baust, bleibt in einer einzigen Disk-Image-Datei. Diese Datei wächst unbemerkt, und der Finder kann dir nicht sagen, was darin steckt. Dieser Guide zeigt, wie du den Platzbedarf von Docker misst, welchen prune-Befehl du ausführen solltest, was jede Option löscht und wie das Disk-Image selbst funktioniert.
Schritt 1: Sehen, was Docker belegt
Fang mit einem Befehl an, der nur liest:
docker system df
Er zeigt eine Tabelle mit Images, Containers, Local Volumes und Build Cache, mit den Spalten Total, Active, Size und Reclaimable (docker system df). Reclaimable ist der Platz, den du zurückbekommst, ohne anzufassen, was gerade genutzt wird.
Für Details zu jedem Image, Container und Volume:
docker system df -v
Achte auf drei Dinge:
- Images ohne laufenden Container. Manche sind „dangling“: alte Layer ohne Tag, die meist nach einem Rebuild übrig bleiben.
- Build Cache. Auf Rechnern, die oft Images bauen, ist das häufig die größte Zeile.
- Local Volumes. Darin liegen meist echte Daten, etwa eine lokale Postgres- oder MySQL-Datenbank. Geh vorsichtig damit um.
Schritt 2: Das Standard-Prune
Die übliche Aufräumaktion ist:
docker system prune
Laut der offiziellen Referenz entfernt sie:
- alle gestoppten Container
- alle Netzwerke, die von keinem Container genutzt werden
- alle verwaisten (dangling) Images
- ungenutzten Build-Cache
Volumes werden standardmäßig nicht entfernt. Docker fragt nach einer Bestätigung, bevor es etwas löscht.
Nur Altes entfernen
Wenn du aktuelle Arbeit behalten willst, filtere nach Alter. Der Filter until akzeptiert Zeitangaben wie 24h:
docker system prune --filter "until=24h"
Das entfernt nur Container, Images und Netzwerke, die vor mehr als 24 Stunden erstellt wurden.
Schritt 3: Aggressivere Optionen
Alle ungenutzten Images mit -a entfernen
docker system prune -a
Mit -a entfernt Docker jedes Image, dem kein Container zugeordnet ist, nicht nur die verwaisten, und den gesamten Build-Cache.
Anonyme Volumes mit –volumes entfernen
docker system prune --volumes
Mit --volumes entfernt Docker zusätzlich anonyme Volumes, die von keinem Container genutzt werden.
Beides kombiniert, docker system prune -a --volumes, ist die destruktivste Option. Nutze sie nur auf einem Rechner, auf dem du alles von Grund auf neu aufbauen kannst.
Schritt 4: Nur den Build-Cache aufräumen
Wenn docker system df zeigt, dass der Build Cache das Problem ist, musst du Images und Container gar nicht anfassen:
docker builder prune
Standardmäßig entfernt das nur verwaisten Build-Cache (docker builder prune). Nützliche Optionen:
-aentfernt den gesamten ungenutzten Build-Cache, nicht nur verwaiste Einträge.--filter until=24hbehält aktuellen Cache.--keep-storagebehält eine bestimmte Menge Cache, zum Beispiel--keep-storage 10GB, damit häufige Builds schnell bleiben.
Schritt 5: Das Disk-Image von Docker Desktop verstehen
Auf dem Mac speichert Docker Desktop alle Linux-Container und Images in einer einzigen Disk-Image-Datei. Laut Docker-Dokumentation liegt sie unter ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw (Docker Desktop for Mac FAQs). Den Speicherort siehst du unter Settings > Resources > Advanced.
Die echte Größe ist kleiner, als sie aussieht
Docker.raw ist eine Sparse-Datei. Docker weist darauf hin, dass viele Tools die maximale Dateigröße anzeigen, nicht die tatsächliche. Um die echte Größe zu sehen, führe in diesem Ordner aus:
cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw
Die erste Spalte ist der tatsächlich belegte Platz; die Größenspalte ist das Maximum.
Prune gibt Platz frei, Dateien in Containern zu löschen nicht
Laut Docker wird Platz nur frei, wenn Images gelöscht werden. Bei einer Docker.raw-Datei kommt der Platz meist innerhalb von Sekunden bei macOS an. Falls nicht, dokumentiert Docker diesen Befehl, um es anzustoßen:
docker run --privileged --pid=host docker/desktop-reclaim-space
Das Speicherlimit in den Einstellungen
Unter Settings > Resources > Advanced kannst du in Docker Desktop festlegen, wie viel Speicherplatz die Engine maximal nutzen darf (Docker Desktop settings). Ein höherer Wert gibt Docker Luft. Ein niedrigerer Wert ist kein Aufräumwerkzeug:
Docker.raw nie von Hand löschen
Die Datei im Finder zu löschen oder zu verschieben ist dasselbe, wie Docker komplett zu leeren: Images, Container und Volumes verschwinden mit ihr. Wenn du sauber neu anfangen willst, nutze bewusst die Reset-Option von Docker und wisse, was du verlierst. Für das normale Aufräumen reichen die prune-Befehle.
Eine sichere Routine
docker system df, um zu sehen, was sich zurückholen lässt.docker system pruneeinmal pro Woche, oder mit--filter until=168h, um die letzte Woche zu behalten.docker builder prune, wenn der Build-Cache wächst.-aund--volumesnur, wenn du weißt, was du verlierst.
Führe nach jedem Schritt erneut docker system df aus, um zu sehen, wie viel Platz zurückgekommen ist.
Nächste Schritte
Docker ist selten das einzige Entwickler-Tool, das deine Festplatte füllt. Wenn du Apple-Apps entwickelst, lies, wie du Xcode DerivedData sicher löschst. Für JavaScript-Projekte sieh dir an, wie du node_modules und die Caches von npm, pnpm und yarn aufräumst. Und für den Rest deines Macs fang mit Speicherplatz auf dem Mac freigeben an oder probier Pruneo aus, es ist kostenlos.
FAQ
Löscht docker system prune Volumes?
Standardmäßig nicht. Volumes bleiben erhalten, außer du fügst --volumes hinzu, und selbst dann entfernt Docker nur anonyme Volumes, die kein Container nutzt.
Warum ist Docker.raw auf meinem Mac so groß?
Viele Tools zeigen die maximale Größe des Disk-Images an, nicht den tatsächlich belegten Platz. Docker dokumentiert ls -klsh Docker.raw, um die echte Größe in der ersten Spalte zu sehen.
Kann ich Docker.raw einfach löschen?
Damit entfernst du alle deine Container, Images und Volumes auf einmal. Nutze stattdessen die prune-Befehle, oder setze Docker Desktop bewusst zurück, wenn du wirklich bei null anfangen willst.
Was ist der Unterschied zwischen docker system prune und docker builder prune?
docker system prune räumt Container, Netzwerke, Images und Build-Cache zusammen auf. docker builder prune räumt nur den Build-Cache auf, der oft den größten Teil ausmacht.