注册表缓存

缓存registry存储可以被认为是inline 缓存的扩展。与缓存不同inlineregistry缓存与图像完全分离,这允许更灵活的使用——registry支持的缓存可以完成内联缓存可以做的所有事情,甚至更多:

  • 允许分离缓存和生成的图像工件,以便您可以在没有缓存的情况下分发最终图像。
  • 它可以有效地缓存模式下的多阶段构建max,而不仅仅是最后阶段。
  • 它与其他出口商合作以获得更大的灵活性,而不仅仅是出口商 image

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

概要

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

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

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

姓名选项类型默认描述
refcache-to,cache-from细绳要导入的缓存图像的全名。
destcache-to细绳缓存导出到的本地目录的路径。
modecache-tomin,maxmin缓存要导出的图层,请参阅 缓存模式
oci-mediatypescache-totrue,falsetrue在导出的清单中使用 OCI 媒体类型,请参阅 OCI 媒体类型
compressioncache-togzip, estargz,zstdgzip压缩类型,请参见 缓存压缩
compression-levelcache-to0..22压缩级别,请参阅 缓存压缩
force-compressioncache-totrue,falsefalse强制应用压缩,请参阅 缓存压缩
ignore-errorcache-to布尔值false忽略因缓存导出失败而导致的错误。

您可以为 选择任何有效值ref,只要它与您将图像推送到的目标位置不同即可。您可以选择不同的标签(例如foo/bar:latestfoo/bar:build-cache)、单独的图像名称(例如 foo/barfoo/bar-cache),甚至不同的存储库(例如 docker.io/foo/barghcr.io/foo/bar)。您可以决定用于将图像与缓存图像分离的策略。

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

进一步阅读

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

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