Share feedback
Answers are generated based on the documentation.

镜像与镜像仓库导出器

image 导出器将构建结果输出为容器镜像格式。registry 导出器与之完全相同,但它通过自动设置 push=true 来推送结果。

概要(Synopsis)

使用 imageregistry 导出器构建容器镜像:

$ docker buildx build --output type=image[,parameters] .
$ docker buildx build --output type=registry[,parameters] .

下表描述了你可以为 type=image 传递给 --output 的可用参数:

参数 类型 默认值 描述
name String 镜像名称。要指定多个名称,请使用逗号分隔的列表。
push true,false false 创建镜像后进行推送。
push-by-digest true,false false 不带名称推送镜像。
registry.insecure true,false false 允许推送到不安全的镜像仓库。
dangling-name-prefix <value> 使用 prefix@<digest> 命名镜像,用于匿名镜像
name-canonical true,false 添加额外的规范名称 name@<digest>
compression uncompressed,gzip,estargz,zstd gzip 压缩类型,请参阅 压缩
compression-level 0..22 压缩级别,请参阅 压缩
force-compression true,false false 强制应用压缩,请参阅 压缩
rewrite-timestamp true,false false 将文件时间戳重写为 SOURCE_DATE_EPOCH 值。有关如何指定 SOURCE_DATE_EPOCH 值,请参阅 构建可复现性
oci-mediatypes true,false false 在导出器清单中使用 OCI 媒体类型,请参阅 OCI 媒体类型
oci-artifact true,false false 证明被格式化为 OCI 制品,请参阅 OCI 媒体类型
unpack true,false false 创建后解包镜像(与 containerd 配合使用)
store true,false true 将结果镜像存储到 worker 的(例如 containerd)镜像存储中,并确保镜像在内容存储中具有所有 blob。如果 worker 没有镜像存储(例如使用 OCI worker 时),则忽略此参数。
annotation.<key> String 使用相应的 keyvalue 将注解附加到构建的镜像上,请参阅 注解

name 参数是 --output 值内部的 CSV 值。要指定多个镜像名称,请引用完整的 name 字段:

$ docker buildx build \
    --output 'type=image,"name=registry.example.com/myapp:1.0,registry.example.com/myapp:latest",push=true' .

如果要改用 CLI 标志分配多个名称,请重复使用 --tag 标志

Annotations

这些导出器支持使用 annotation 参数(后跟使用点表示法的注解名称)添加 OCI 注解。以下示例设置了 org.opencontainers.image.title 注解:

$ docker buildx build \
    --output "type=<type>,name=<registry>/<image>,annotation.org.opencontainers.image.title=<title>" .

有关注解的更多信息,请参阅 BuildKit 文档

延伸阅读

有关 imageregistry 导出器的更多信息,请参阅 BuildKit README