Yes, it is somewhat vague in docker 20.10.5. Could use a pull request or two to update documentation.
- The
dockerdriver cache uses the same storage driver as used for image layers. Metadata is stored in databases at/var/lib/docker/buildkit. When docker usesoverlay2storage driver, the layer is in/var/lib/docker/overlay2/<ID>/diff/. For<ID>, see below./var/lib/dockercan vary depending ondata-rootin yourdockerdconfiguration. Builders usingdocker-containerorkubernetesdriver keeps the data on a volume. docker buildx [--builder name] du --verboselists build cache. You can also inspect the docker driver caches fromdocker system df -v --format '{{ .BuildCache | json }}'. The cache typeexec.cachemountis theRUN --mount type=cache. You can find the layer using theID, which is not the same as used in--mount id. The mount type is implemented by buildkit, so thedocker run --mountdoes not recognize it. To get rid of it eitherdocker buildx pruneordocker build --no-cache.- The cache key is the value from
id=.iddefaults to value oftarget. You need to specifyidwhen you need different cache at the sametarget. - Yes. They are the same cache regardless of the
targetor Dockerfile. Different builders have their own caches, which keeps for example caches for different architectures separate.