Docker
Docker Desktop VM disk: why it keeps growing after projects end
Docker images, layers, and build cache are stored inside Docker-managed directories and VM disk files. They can grow fast and stay invisible to normal Finder checks.
Updated:
Read time: 6 min
Why this silently grows
Each `docker pull`, `docker build`, and compose environment can add new layers. Even when containers stop, cached layers and VM disk data can remain. Over time, old experiments and CI-like local workflows leave behind large chunks that are hard to estimate manually.
How Free Mac Space finds it
Free Mac Space scans Docker locations like ~/Library/Containers/com.docker.docker and ~/.docker, then surfaces large directories first. This turns opaque Docker storage into a ranked list so you can see whether image data, build cache, or configuration data is the main consumer.
How cleanup is handled
You can target oversized cache directories directly from scan results. Cleanup actions use Trash-first behavior and validation against Docker category roots. If a path resolves outside approved roots (for example symlink edge cases), the action is blocked.
Safety boundary
Docker state can affect active environments. The app keeps this category in review-first mode and requires explicit user selection before any cleanup action.
Paths covered in Free Mac Space
- ~/Library/Containers/com.docker.docker
- ~/.docker
Recommended monthly check
- Clean old build/cache-heavy paths after major project cycles.
- Avoid removing data tied to currently running local services.
- Use the post-clean scan to confirm that expected space is reclaimed.
Step-by-step workflow
1. Identify why Docker storage keeps growing
Each `docker pull`, `docker build`, and compose environment can add new layers. Even when containers stop, cached layers and VM disk data can remain. Over time, old experiments and CI-like local workflows leave behind large chunks that are hard to estimate manually.
2. Inspect the highest-impact paths first
Free Mac Space scans Docker locations like ~/Library/Containers/com.docker.docker and ~/.docker, then surfaces large directories first. This turns opaque Docker storage into a ranked list so you can see whether image data, build cache, or configuration data is the main consumer. Priority paths: ~/Library/Containers/com.docker.docker, ~/.docker.
3. Confirm the safety boundary before acting
Docker state can affect active environments. The app keeps this category in review-first mode and requires explicit user selection before any cleanup action.
4. Apply a review-first cleanup workflow
You can target oversized cache directories directly from scan results. Cleanup actions use Trash-first behavior and validation against Docker category roots. If a path resolves outside approved roots (for example symlink edge cases), the action is blocked.
5. Monthly validation step 1
Clean old build/cache-heavy paths after major project cycles.
6. Monthly validation step 2
Avoid removing data tied to currently running local services.
7. Monthly validation step 3
Use the post-clean scan to confirm that expected space is reclaimed.
Frequently asked questions
What hidden storage sources are covered for Docker?
Primary sources include Container layers, build cache, virtual disk files. Each `docker pull`, `docker build`, and compose environment can add new layers. Even when containers stop, cached layers and VM disk data can remain. Over time, old experiments and CI-like local workflows leave behind large chunks that are hard to estimate manually.
Which macOS paths should I inspect first?
Start with: ~/Library/Containers/com.docker.docker, ~/.docker. Free Mac Space scans Docker locations like ~/Library/Containers/com.docker.docker and ~/.docker, then surfaces large directories first. This turns opaque Docker storage into a ranked list so you can see whether image data, build cache, or configuration data is the main consumer.
How can I reduce this storage safely?
You can target oversized cache directories directly from scan results. Cleanup actions use Trash-first behavior and validation against Docker category roots. If a path resolves outside approved roots (for example symlink edge cases), the action is blocked. Docker state can affect active environments. The app keeps this category in review-first mode and requires explicit user selection before any cleanup action.
What should the monthly review checklist look like?
Clean old build/cache-heavy paths after major project cycles. Avoid removing data tied to currently running local services. Use the post-clean scan to confirm that expected space is reclaimed.