Docker 从命令缓存新拉出的图像不起作用
Docker cache from command for new pulled images doesnt work
我知道 Docker --cache-from 命令会在构建不同的图像时从拉取的图像中恢复缓存。我错了吗?每当我创建一个新图像,删除它和它的悬空缓存,拉它并再次构建它时,它不会使用新下载的图像作为缓存。以下是我的用例的命令。
docker build --target base -t image:base .
docker push image:base
docker image rm image:base
docker builder prune
docker pull image:base
docker build --target base --cache-from image:base -t image:base .
如果我不修剪缓存,无论 --cache-from 命令是否存在,它都会使用它。因此,我应该如何使用 --cache-from,是否有可能在不使用 docker 加载的情况下从拉取的图像恢复缓存(因为它需要一段时间)?
对于 buildkit,有一个额外的设置可以在创建的图像中包含缓存元数据:
--build-arg BUILDKIT_INLINE_CACHE=1
这只处理最终的图像层。如果你想包含多阶段构建的中间阶段的缓存,你可能想要缓存到注册表,我认为它需要 buildx 来访问这些 buildkit 选项。
--cache-from type=registry,ref=localhost:5000/myrepo:buildcache
--cache-to type=registry,ref=localhost:5000/myrepo:buildcache,type=max
Buildkit 在自述文件中定义了其他几个缓存选项。
我知道 Docker --cache-from 命令会在构建不同的图像时从拉取的图像中恢复缓存。我错了吗?每当我创建一个新图像,删除它和它的悬空缓存,拉它并再次构建它时,它不会使用新下载的图像作为缓存。以下是我的用例的命令。
docker build --target base -t image:base .
docker push image:base
docker image rm image:base
docker builder prune
docker pull image:base
docker build --target base --cache-from image:base -t image:base .
如果我不修剪缓存,无论 --cache-from 命令是否存在,它都会使用它。因此,我应该如何使用 --cache-from,是否有可能在不使用 docker 加载的情况下从拉取的图像恢复缓存(因为它需要一段时间)?
对于 buildkit,有一个额外的设置可以在创建的图像中包含缓存元数据:
--build-arg BUILDKIT_INLINE_CACHE=1
这只处理最终的图像层。如果你想包含多阶段构建的中间阶段的缓存,你可能想要缓存到注册表,我认为它需要 buildx 来访问这些 buildkit 选项。
--cache-from type=registry,ref=localhost:5000/myrepo:buildcache
--cache-to type=registry,ref=localhost:5000/myrepo:buildcache,type=max
Buildkit 在自述文件中定义了其他几个缓存选项。