The Docker data root filled because layer and build caches accumulated across jobs. Once /var/lib/docker is full, any pull, build, or run that writes a layer fails with ENOSPC.
What this error means
Docker operations fail with no space left on device, and docker system df shows a large reclaimable build cache. Pruning or a fresh runner clears it with no Dockerfile change.
docker
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Build Cache 142 0 31.7GB 31.7GB (100%)
Error: failed to register layer: no space left on device
Common causes
BuildKit cache grows unbounded on reused runners
The build cache persists between jobs on a long-lived runner and is never reclaimed until it fills the disk.
Many image layers and dangling images
Repeated builds leave dangling images and intermediate layers that pile up in the docker data root.
Prune the builder cache at the start of heavy build jobs.
Use a runner with a larger disk for image-heavy pipelines.
How to prevent it
Bound the BuildKit cache size.
Prune dangling images between builds.
Right-size disk for build-heavy runners.
Frequently asked questions
What causes "Layer cache filled disk"?
The build cache persists between jobs on a long-lived runner and is never reclaimed until it fills the disk.
How do I fix Layer cache filled disk?
Reclaim the build cache and unused images.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.