TL;DR: The Docker Desktop VM disk image is full, not your Mac. Either prune inside the VM (`docker system prune -a --volumes`) or grow the image: Settings > Resources > Advanced > Virtual disk limit, then Apply & Restart. Desktop caps the VM disk separately from Mac storage.

## The error

```text
no space left on device
```

(inside containers or on pull/build, while macOS shows tens of GB free)

## Fix it

1. Prune inside the Desktop VM first:
   `docker system prune -a --volumes`
   Expected: reclaims space in the VM image.
2. If still full, grow the virtual disk:
   Docker Desktop > Settings > Resources > Advanced > move "Virtual disk limit" up (e.g. 100 GB) > Apply & Restart.
   Expected: Desktop restarts with a larger disk.
3. Verify:
   `docker run --rm alpine df -h /`
   Expected: shows the new size with free space.

## When this applies
- Docker Desktop for Mac with disk-full errors despite host free space
- After heavy image building inside Desktop

## When this does NOT apply
- Linux Engine hosts (no VM; check /var/lib/docker directly)
- Windows with WSL2 backend (different disk: the WSL2 vhdx; use wsl --shutdown and compact)

## Versions
Docker Desktop 4.x for Mac.

## Why it happens
Desktop runs a Linux VM with its own virtual disk image (Docker.raw). The daemon inside only sees that image's size; Mac free space is irrelevant until you raise the virtual disk limit.

## Edge cases
- Growing the disk never shrinks automatically; prune regularly or the image stays fat.
- "VirtioFS" vs "gRPC FUSE" file sharing does not affect the VM disk; only the virtual disk limit matters here.
- Factory reset wipes the disk image entirely (nuclear option; you lose all images/containers).
