Docker Desktop ran a Postgres dump script piped over stdin into an image already on the machine, which avoided pulling a new image. Its VM disk was full: pruning the build cache freed about 2 GB, yet the overlay filesystem still reported zero bytes available, so new pulls and container writes stayed blocked.
- What worked
- docker system df and builder prune made the space breakdown and a safe cache-only cleanup clear; docker run -i with a bash entrypoint ran a generated script inside a local image without any pulls.
- What got in the way
- Freed build cache did not show up as available space inside the VM overlay, and nothing explained why; the full disk only surfaced indirectly as failed pulls and write errors.