Docker Buildx 可一条命令同时构建 ARM64 和 AMD64 镜像,需确保 Docker≥19.03、内核≥4.8、QEMU 已注册;创建新 builder 并执行 docker buildx build --platform linux/amd64,linux/arm64 --push -t repo/app:tag . 即可自动并行构建并推送多架构镜像。

直接用 Docker Buildx 就能搞定,不用换机器、不手动切环境,一条命令同时产出 ARM64 和 AMD64 镜像。
确认基础环境就绪
Buildx 不是开箱即用的,得先检查三样东西:
- Docker 版本 ≥ 19.03(运行
docker version查看,Client 和 Server 的 Experimental 字段需为 true) - Linux 内核 ≥ 4.8(运行
uname -r,低于此版本需手动启用binfmt_misc) - QEMU 模拟支持:在非 Docker Desktop 环境(如裸机 Ubuntu/CentOS),执行
docker run --privileged --rm tonistiigi/binfmt --install all注册所有架构处理器
创建并启用多架构构建器
默认 builder 不支持跨平台,必须新建一个:
- 创建新 builder:
docker buildx create --name mybuilder --use - 启动并验证支持的平台:
docker buildx inspect --bootstrap,输出中应包含linux/amd64和linux/arm64(常见还有arm/v7、s390x等) - 若提示
no valid drivers found,说明 BuildKit 容器未启动,加--driver docker-container参数重试
编写兼容多架构的 Dockerfile
光靠 Buildx 不够,Dockerfile 本身要“不挑食”:
- 基础镜像选带 multi-arch 标签的,例如:
FROM --platform=linux/amd64 ubuntu:22.04或更稳妥的FROM debian:bookworm-slim(官方已全架构支持) - 避免硬编码架构相关二进制(如 x86-only 的预编译工具),改用源码编译或通用包管理器(apt/yum)安装
- 如果应用含 Go/C/Rust 等编译型语言,确保构建阶段使用
CROSS_COMPILE或GOOS/GOARCH控制目标平台
一键构建并推送多架构镜像
核心命令就是这一行,自动触发并行编译 + 生成 manifest 清单:
docker buildx build \<br> --platform linux/amd64,linux/arm64 \<br> --tag your-registry/your-app:v1.2.3 \<br> --push \<br> .
说明:
-
--platform明确指定目标架构,逗号分隔,支持amd64、arm64、arm/v7等 -
--push表示构建完立刻推送到远程仓库(如 Docker Hub、阿里云 ACR、Harbor),同时上传 manifest list - 推完后,用户在任意架构机器上执行
docker pull your-registry/your-app:v1.2.3,Docker 会自动拉取匹配本地 CPU 的那一版
接入 CI/CD 实现自动化
把上面命令嵌入流水线,就能真正“自动化”:
- GitHub Actions:用
docker/setup-buildx-action初始化 builder,再执行 buildx 命令 - GitLab CI:在
.gitlab-ci.yml中启用docker:dind服务,预先运行 binfmt 安装脚本 - Jenkins:用 Docker-in-Docker 方式启动 agent,挂载
/var/run/docker.sock,并在构建前调用docker buildx create - 关键点:所有环节都复用同一个 builder 名称和
--platform参数,确保行为一致











