注册表缓存

可以将缓存存储视为缓存的扩展。与缓存不同,缓存与 镜像允许更灵活地使用 - 支持的缓存可以做到 内联缓存可以做的所有事情,等等:registryinlineinlineregistryregistry

  • 允许分离缓存和生成的镜像伪影,以便您可以 分发最终镜像,而不在内部缓存。
  • 它可以在模式下高效缓存多阶段构建,而不仅仅是 最后阶段。max
  • 它可以与其他导出器一起使用以获得更大的灵活性,而不仅仅是导出器。image

默认驱动程序不支持此缓存存储后端。 要使用此功能,请使用其他驱动程序创建新的构建器。有关更多信息,请参阅构建驱动程序docker

概要

与更简单的缓存不同,缓存支持多个 配置参数:inlineregistry

$ docker buildx build --push -t <registry>/<image> \
  --cache-to type=registry,ref=<registry>/<cache-image>[,parameters...] \
  --cache-from type=registry,ref=<registry>/<cache-image> .

下表描述了您可以传递给 和 的可用 CSV 参数。--cache-to--cache-from

名字选择类型违约描述
refcache-to,cache-from字符串要导入的缓存镜像的全名。
modecache-tomin,maxmin要导出的缓存层,请参阅缓存模式
oci-mediatypescache-totrue,falsetrue在导出的清单中使用 OCI 媒体类型,请参阅 OCI 媒体类型
image-manifestcache-totrue,falsefalse使用 OCI 媒体类型时,请为高速缓存镜像生成镜像清单而不是镜像索引,请参阅 OCI 媒体类型
compressioncache-togzip,,estargzzstdgzipCompression type (压缩类型),请参阅 缓存压缩
compression-levelcache-to0..22压缩级别,请参阅 缓存压缩
force-compressioncache-totrue,falsefalse强制应用压缩,请参见缓存压缩
ignore-errorcache-to布尔false忽略缓存导出失败导致的错误。

您可以为 选择任何有效的值,只要它与 将镜像推送到的目标位置。您可以选择不同的标签 (例如 和 ),分隔镜像名称(例如 和 ),甚至不同的存储库(例如 和 )。由您决定 策略。reffoo/bar:latestfoo/bar:build-cachefoo/barfoo/bar-cachedocker.io/foo/barghcr.io/foo/bar

如果目标不存在,则缓存导入步骤将 失败,但构建会继续。--cache-from

延伸阅读

有关缓存的介绍,请参阅 Docker 构建缓存

有关缓存后端的更多信息,请参阅 BuildKit README。registry