首页/云/Docker 容器速查/buildx build 构建与导出规则
镜像与构建107 条

buildx build 构建与导出规则

buildx build 的产物去向由导出选项决定:--load 导入本地镜像库、--push 推仓库、两者不提则留在构建缓存里。

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

buildx build 是什么

buildx build 是功能更完整的构建命令,产物去向由导出选项决定:--load 载入本地镜像库、--push 推到镜像仓库,两个都不写时结果只留在构建缓存里,docker images 看不到。多平台构建必须用 --push,本地镜像库承载不了多平台清单。

基本信息

用途支持多平台、缓存导出、自定义输出的构建命令
导出选项--load 导入本地、--push 推送仓库、--output 自定义(local、tar、oci)
多平台限制多平台产物不能 --load,只能推送
前提需要 buildx 构建器,多平台要求 docker-container 驱动
查看构建器docker buildx ls 查看实例与驱动

典型使用场景

  • 一次构建多平台镜像:amd64 与 arm64 同时产出并推送
  • 替代 docker build 使用缓存导出,让 CI 复用构建缓存
  • 把产物导出成 tar 交给下游流程或做离线分发
  • 在本地验证构建结果,用 --load 之后才能被 docker images 看到
  • 统一本地与 CI 的构建工具,减少结果差异带来的排查成本
  • 为只关心文件产物(不要镜像)的场景导出到本地目录

示例

示例
docker buildx ls                                       # 查看构建器与驱动
docker buildx build --load -t app/web:dev .             # 载入本地镜像库
docker buildx build --platform linux/amd64,linux/arm64 \
  --tag registry.example.com/app/web:1.0 --push .       # 多平台必须推送
docker buildx build --output type=docker,dest=image.tar -t app/web:1.0 .  # 导出 tar

产物去向怎么选

选项结果适用情况
不写导出选项只留在构建缓存里仅验证能否构建成功
--load载入本地镜像库本地运行与调试
--push推送到镜像仓库CI 发布,多平台唯一可行
--output type=docker,dest导出为 tar 文件离线分发、审计留档
--output type=local导出到本地目录只需要文件产物,不需要镜像
docker-container 驱动下漏加 --load 或 --push,是“构建成功却找不到镜像”的第一原因,先确认导出选项再怀疑构建本身。
多平台构建会并行执行各平台的阶段,构建器要先具备对应平台的能力(原生节点或 binfmt 注册),否则报 exec format error 之类的错误。
新装的 buildx 默认构建器可能不支持多平台,先用 docker buildx create 建实例并 --use 切换,再执行多平台构建。

易错点

  • 用 buildx 构建却没加导出选项,docker images 里找不到镜像,容易误以为构建失败
  • 多平台构建加 --load 会直接报错:本地镜像库不支持多平台清单,改用 --push 或按平台分别构建
  • CI 每次新建构建器而不复用缓存,buildx 的加速能力形同虚设,要配好 cache-to 与 cache-from
  • 删掉构建器或换名后旧缓存不可用,重建后首次构建明显变慢,属于预期现象而不是故障

数据来源与参考

  • Docker 官方文档:buildx build(docs.docker.com/build)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌