注册表缓存
缓存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
和 的可用 CSV 参数--cache-from
。
姓名 | 选项 | 类型 | 默认 | 描述 |
---|---|---|---|---|
ref | cache-to ,cache-from | 细绳 | 要导入的缓存图像的全名。 | |
dest | cache-to | 细绳 | 缓存导出到的本地目录的路径。 | |
mode | cache-to | min ,max | min | 缓存要导出的图层,请参阅 缓存模式。 |
oci-mediatypes | cache-to | true ,false | true | 在导出的清单中使用 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。