注册表缓存

registry 缓存存储可以被认为是 inline 缓存的扩展。与 inline 缓存不同,registry 缓存完全独立于镜像,这允许更灵活的使用——registry 支持的缓存可以做 inline 缓存所能做的一切,甚至更多。

  • 允许分离缓存和生成的镜像文件,以便您可以在不包含缓存的情况下分发最终镜像。
  • 它可以在 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--cache-from 的可用 CSV 参数。

名称选项类型默认值描述
refcache-to,cache-from字符串要导入的缓存镜像的全名。
modecache-tomin,maxmin要导出的缓存层,请参阅 缓存模式
oci-mediatypescache-totrue,falsetrue在导出的清单中使用 OCI 媒体类型,请参阅OCI 媒体类型
image-manifestcache-totrue,falsetrue使用 OCI 媒体类型时,为缓存镜像生成镜像清单而不是镜像索引,请参阅OCI 媒体类型
compressioncache-togzipestargzzstdgzip压缩类型,请参阅缓存压缩
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

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.