The command to clear docker build cache is docker builder prune , and the reason people run it twice is that it reaches only the builder it is pointed at: on a runner we measured, it reclaimed 180.7 MB from the default builder and exactly 0 B from the docker-container builder sitting beside it with 399.6 MB. On a GitHub Actions runner the whole question is usually moot, because a fresh job starts with an empty cache.
One runner, one Dockerfile, read with docker buildx du after every command. The last bar follows a rebuild, not the empty store above it. From job-l.sh, 2026-09-20.
The build cache is not inside your images, so deleting images frees none of it, and docker system df will happily report tens of gigabytes under a row that docker image prune never touches.…