首页/云/Docker 容器速查/buildx 输出到本地目录或 OCI 归档
镜像与构建107 条

buildx 输出到本地目录或 OCI 归档

buildx 可以把构建结果直接输出为本地文件或 OCI layout:拿编译产物、生成离线归档、交给扫描工具,不必先进本地镜像库。

Docker 容器速查云更新于 2026-10-13

把构建结果直接输出成文件

buildx 的输出类型决定构建产物去往何处。type=local 把指定阶段的内容铺到本地目录,适合取出编译产物或某一阶段的文件;type=oci 生成 OCI layout 归档,用于离线搬运或交给扫描工具;type=docker 把镜像载入本地镜像库,效果等同于 --load。这几个出口不经过本地镜像列表,需要镜像时用 --load,需要远端时用 --push。

基本信息

输出类型type=local / type=oci / type=docker
local 行为把目标目录内容铺到 dest 指定目录
oci 行为生成 OCI layout 归档文件或目录
等价关系type=docker 等价于 --load

典型使用场景

  • 取编译产物:多阶段构建里只导出构建阶段的二进制文件
  • 生成离线归档:保存为 OCI 格式后再搬到隔离环境
  • 交给扫描工具:把产物落盘后交由外部安全工具检查
  • 前端静态产物:直接输出到发布目录,省掉一层镜像
  • 流水线交接:把产物交给后续阶段,避免中间镜像层层堆积

三种输出写法

三种输出写法
# 只取 build 阶段的文件到本地目录
docker buildx build --target build --output type=local,dest=./out .

# 生成 OCI layout 归档,便于搬运与分发
docker buildx build --output type=oci,dest=./app-web-1.4.2.tar .

# 等价于 --load:把镜像载入本地库
docker buildx build --output type=docker,name=app/web:1.4.2 .

# 核对产物
tar tf app-web-1.4.2.tar | head

输出类型对照

类型产物形态典型用途
type=local目标目录里的文件取出编译产物或某个阶段的结果
type=ociOCI layout 目录或归档文件离线分发、交给扫描工具
type=docker载入本地镜像库需要本地镜像的场景
--push推送到镜像仓库构建完成即发布
local 输出会把文件直接铺进目标目录,同名文件被覆盖,先选一个干净的目录再执行。
OCI 归档交给其他工具消费前,先确认对方支持这一格式,避免流程衔接不上。
多阶段构建里 --target 与 --output 常配合使用:--target 决定构建停在哪个阶段,--output type=local 决定把该阶段的内容铺到哪里,两者一起用就能只取编译产物而不生成最终镜像。
输出类型可以按需组合成多条出口,把镜像推到仓库的同时把产物落盘;构建一次多处产出,省掉重复构建的时间。

易错点

  • 输出目录不干净:同名文件被静默覆盖,产物对不上还以为构建出错
  • 把 OCI 归档当 docker save 的产物:两者格式不同,导入方式也不一样
  • 以为不写输出也会落盘:默认行为随驱动与构建器变化,明确写出口更可靠
  • 用 local 输出当作最终交付物:它只是文件,不含镜像的元数据与标签信息

数据来源与参考

  • Docker 官方文档:buildx 输出类型 local/oci/docker(docs.docker.com/build/exporters)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌