Pruneo-LogoPruneo

Docker prune auf dem Mac: Speicherplatz freigeben ohne Datenverlust

Kurze Antwort

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:

  1. Images ohne laufenden Container. Manche sind „dangling“: alte Layer ohne Tag, die meist nach einem Rebuild übrig bleiben.
  2. Build Cache. Auf Rechnern, die oft Images bauen, ist das häufig die größte Zeile.
  3. 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:

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:

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

  1. docker system df, um zu sehen, was sich zurückholen lässt.
  2. docker system prune einmal pro Woche, oder mit --filter until=168h, um die letzte Woche zu behalten.
  3. docker builder prune, wenn der Build-Cache wächst.
  4. -a und --volumes nur, 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.

Probier es mit Pruneo

Kostenlos für macOS 14 oder neuer. Alles, was es aufräumt, lässt sich aus der Quarantäne zurückholen.

Pruneo ist für den Mac

Schick dir den Link und lade Pruneo auf deinem Mac herunter. Kostenlos, ohne Konto.

Per Mail an mich
Trotzdem herunterladen