Docker frisst Speicher auf dem Mac: was prune wirklich löscht
Docker.raw ist 60 GB groß, docker system prune -a gibt 40 davon frei — und nimmt dabei Dinge mit, die niemand zurückholen kann. Die vier Konten hinter der Zahl, und welcher Befehl welches leert.

Auf einem Mac mit Docker Desktop ist der größte einzelne Klumpen Speicher fast immer dieselbe Datei: ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw. Sie wird 40, 60, manchmal 100 GB groß, und ein Aufräum-Programm sieht darin genau eine Zahl.
Diese Zahl ist die Summe von vier getrennten Konten, und sie zu addieren ist der Fehler.
Was Docker über sich selbst sagt
Die Antwort steht nicht im Dateisystem, sondern im Werkzeug:
docker system df -vDer Aufruf ist read-only und liefert vier Zeilen — Images, Containers, Local Volumes, Build Cache — jeweils mit SIZE und RECLAIMABLE. Genau diese Aufteilung entscheidet, was ein Aufräumen kostet:
| Konto | Was drin steckt | Kostet ein Löschen |
|---|---|---|
| Build Cache | Zwischenschichten vergangener Builds | Zeit beim nächsten Build |
| Images | geladene und selbst gebaute Abbilder | erneuten Download — oder einen verlorenen Build |
| Containers | Schreibschichten laufender/gestoppter Container | alles, was im Container geschrieben und nicht gemountet wurde |
| Local Volumes | Datenbanken, Uploads, Zustände | echte Daten, unwiederbringlich |
Die Befehle, in der Reihenfolge, in der sie weh tun
docker builder prune # nur Build-Cache. Kostet Zeit, sonst nichts.
docker image prune # nur unbenutzte, unbenannte Images (dangling).
docker system prune # + gestoppte Container, ungenutzte Netzwerke.
docker system prune -a # + JEDES Image ohne laufenden Container.
docker volume prune # anonyme Volumes.
docker volume prune -a # auch die benannten. Das sind meistens Daten.Der Sprung von Zeile drei auf Zeile vier ist ein Flag. Er ist auch der Unterschied zwischen „ich warte beim nächsten Build zwei Minuten“ und „das Image, das ich vor drei Monaten gebaut habe und dessen Dockerfile es nicht mehr gibt, ist weg“.
Der Sprung von Zeile fünf auf Zeile sechs ist ebenfalls ein Flag — und dahinter liegen Postgres-Volumes.
Warum wir den pauschalen Befehl nie vorschlagen
Docker unterscheidet nicht zwischen einem Image, das aus einer Registry kam, und einem, das hier gebaut wurde. Für den Daemon sehen beide gleich aus. Ein Werkzeug, das von außen zuschaut, kann diesen Unterschied also nicht kennen — und darf ihn folglich nicht behaupten.
BalaneDisk zeigt deshalb die vier Konten getrennt, mit drei Urteilen:
- gefahrlos — Build-Cache, dangling Images
- vorher hinsehen — Images, Container-Schichten
- enthält Daten — benannte Volumes
und liefert zu jedem den passenden Befehl statt eines Knopfes. Ausgeführt wird er von dir, im Terminal, mit dem Wissen, was er mitnimmt.
Der Rest der Wahrheit über Docker.raw
Drei Größen gehören zu dieser einen Datei, und sie sind alle drei richtig:
- 01Zugewiesene Größe — die Obergrenze, die Docker Desktop in den Einstellungen bekommen hat.
- 02Tatsächlich belegt — was macOS an Blöcken wirklich vergeben hat (Sparse-Datei).
- 03Innen genutzt — was die Linux-VM davon benutzt.
Nach einem prune sinkt (3) sofort, (2) erst, wenn Docker den freien Platz an macOS zurückgibt. Wer nur auf den Finder schaut, hält das für einen fehlgeschlagenen Aufräumvorgang. Es ist nur ein Abbild, das noch nicht geschrumpft ist.
Kurzfassung
- Nie mit
-aanfangen.docker builder prunezuerst, es kostet nichts außer Zeit. - Benannte Volumes einzeln ansehen, nie im Rudel löschen.
Docker.rawschrumpft verzögert — das ist kein Fehler.- Und der Ordner im Finder ist der falsche Hebel: für einen Cache, den sein Werkzeug verwaltet, ist der Befehl der richtige.
Weiter: Mac-Speicher voll: wo die Gigabyte wirklich stecken.
- Was ist Docker.raw und warum ist die Datei so groß?
- Docker.raw ist das virtuelle Laufwerk der Linux-VM, in der Docker Desktop auf dem Mac läuft. Es ist eine Sparse-Datei: sie belegt nur, was wirklich beschrieben wurde, wächst aber mit, und sie schrumpft nicht automatisch, wenn du innerhalb der VM etwas löschst.
- Warum wird Docker.raw nach dem prune nicht kleiner?
- Weil der Platz innerhalb der VM frei wird, das Abbild außen aber seine Größe behält. Docker Desktop gibt ihn beim nächsten Neustart oder über „Clean / Purge data“ an macOS zurück; unter neueren Versionen läuft ein TRIM automatisch.
- Ist docker system prune -a gefährlich?
- Es löscht keine benannten Volumes, aber alle Images ohne laufenden Container — auch die, die du hier gebaut und nie in eine Registry gepusht hast. Die sind danach weg. Gefährlich für Daten wird erst docker volume prune -a.