首页/云/Docker 容器速查/按平台构建与 --load 导出
镜像与构建107 条

按平台构建与 --load 导出

指定构建目标平台(linux/amd64、linux/arm64 等);输出到本地镜像库的方式随构建驱动而不同。

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

按平台构建是什么

--platform 用来指定构建产物的目标运行平台,例如 linux/amd64、linux/arm64。不写时产物平台与当前构建器一致。BuildKit 会为列表里的每个平台各构建一份,推送仓库时合并成一份多平台清单(manifest list),用户拉取时按自己的架构自动匹配。跨架构构建靠 binfmt/QEMU 模拟或原生构建节点完成,模拟能跑通但速度明显更慢。

基本信息

适用环境Docker 23+ 自带 buildx;Linux、macOS、WSL2 均可
语法docker buildx build --platform linux/arm64 --load -t 名称 .
前置条件docker-container 驱动构建器;跨架构需注册 binfmt 或使用原生节点
导出方式--load 导入本地镜像库;--push 直推仓库(多平台只能 push)

典型使用场景

  • 在 x86 开发机构建 linux/arm64 产物,提前验证 ARM 节点上的行为
  • 为树莓派、ARM 云主机等异构节点准备可运行镜像
  • CI 中一次构建多平台并推送,用户 pull 时自动取到匹配架构
  • 排查拉错架构问题:核对产物平台与目标节点是否一致
  • 在 Dockerfile 里按 TARGETARCH 分支安装对应架构的依赖包

单平台与多平台示例

单平台与多平台示例
# 单平台:构建并导入本地镜像库(docker-container 驱动必须加 --load)
docker buildx build --platform linux/amd64 --load -t app/web:1.0 .
docker inspect -f '{{.Architecture}}' app/web:1.0   # 核对产物架构而不是宿主架构

# 多平台:直接推送仓库,同时生成多平台清单
docker buildx build --platform linux/amd64,linux/arm64 --push -t reg.example.com/app/web:1.0 .
docker buildx imagetools inspect reg.example.com/app/web:1.0   # 查看清单包含的平台

平台值怎么读

写法含义注意
linux/amd64x86_64 服务器与 PC最常见的默认架构
linux/arm64ARM 64 位:ARM 云主机、Apple 芯片桌面环境模拟构建速度较慢
linux/arm/v732 位 ARM,如树莓派 3部分基础镜像不提供该平台
$BUILDPLATFORM构建机自身平台,用于编译阶段编译阶段提速
$TARGETPLATFORM目标平台,用于运行阶段必须在此前用 ARG 声明
多平台构建只能 --push:本地镜像库一份镜像只对应一个架构。要本地验证某个架构,就单独构建那一个平台并加 --load。
Docker Desktop 与多数云构建服务已内置跨架构支持;裸 Linux 主机上跨架构构建要先注册 binfmt 处理器并确认内核已挂载 binfmt_misc。

易错点

  • docker-container 驱动下不加 --load/--push 时镜像只留在构建缓存里,docker images 查不到,容易被误判成构建失败
  • 跨架构模拟会把整个构建流程跑在 QEMU 上,编译类任务可能慢数倍,发布场景优先原生节点或多架构并行构建
  • 只推了单平台就宣称支持多架构,ARM 节点拉取时回退到 amd64 镜像并报 exec format error
  • TARGETARCH 等变量必须在 FROM 之后用 ARG 重新声明才可用,忘记声明会拿到空值,安装脚本静默走错分支

数据来源与参考

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