You ran docker system prune -a, freed 30 GB inside Docker — and ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw is still exactly as huge as before. That is not a bug you can prune away: the disk image file only grows, never shrinks, by design.
Docker Desktop runs containers inside a thin-provisioned virtual disk (Docker.raw on macOS, DockerData.vhdx on Windows). Deleting images inside the VM marks blocks as free inside the virtual filesystem, but the host file keeps its high-water mark — like a hotel that never un-reserves floors. Over months of builds, Docker.raw ratchets up to the largest size it ever needed.
Settings → Resources → Disk → "Clean / Purge data", or newer builds' Shrink disk image action. This reclaims unallocated blocks. If your version has it, stop reading — this is the official path.
docker system df — note real usage (usually 5-15 GB, not the 60 GB the file claims)docker save your must-keep images, or script them in a compose filerm ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.rawdocker load or rebuild from composeThe rebuild takes minutes and the new file starts small. Keep "disk image size" capped so it cannot ratchet past a sane bound again.
"gc" policy in daemon.json)docker system prune -f --filter "until=168h" (cron or launchd)For the general container/image cleanup commands, see our Docker disk cleanup guide. Docker is one of the biggest System Data contributors on developer Macs — the full triage order is in the System Data breakdown, and once Docker is tamed, a survey with DaisyDisk or a maintenance pass with MacCleaner PRO handles the rest.