注册表缓存
目录
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 参数。
名称 | 选项 | 类型 | 默认值 | 描述 |
---|---|---|---|---|
ref | cache-to ,cache-from | 字符串 | 要导入的缓存镜像的完整名称。 | |
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。