注册表缓存
目录
registry 缓存存储可以看作是 inline
缓存的扩展。与 inline 缓存不同,registry 缓存与镜像完全分离,这使得使用更加灵活 - 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和--cache-from的可用CSV参数。
| 名称 | 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|---|
ref | cache-to,cache-from | string | 要导入的缓存镜像的完整名称。 | |
mode | cache-to | min,max | min | 导出的缓存层,请参阅 缓存模式。 |
oci-mediatypes | cache-to | true,false | true | 在导出的清单中使用 OCI 媒体类型,请参阅 OCI 媒体类型。 |
image-manifest | cache-to | true,false | false | 在使用 OCI 媒体类型时,为缓存镜像生成镜像清单而不是镜像索引,参见 OCI 媒体类型。 |
compression | cache-to | gzip,estargz,zstd | gzip | 压缩类型,参见 缓存压缩。 |
compression-level | cache-to | 0..22 | 压缩级别,参见 缓存压缩。 | |
force-compression | cache-to | true,false | false | 强制应用压缩,参见 缓存压缩。 |
ignore-error | cache-to | 布尔值 | false | 忽略由缓存导出失败引起的错误。 |
您可以为ref选择任何有效值,只要它与您推送镜像的目标位置不同即可。您可以选择不同的标签(例如foo/bar:latest和foo/bar:build-cache)、不同的镜像名称(例如foo/bar和foo/bar-cache),甚至不同的仓库(例如docker.io/foo/bar和ghcr.io/foo/bar)。如何将您的镜像与缓存镜像区分开,由您决定策略。
如果不存在 --cache-from 目标,则缓存导入步骤将失败,但构建将继续。
进一步阅读
有关缓存的介绍,请参阅 Docker 构建缓存。
有关 registry 缓存后端的更多信息,请参阅
BuildKit README。