一次编译全架构分发只需 docker buildx build 配合 --platform 和 --push:先创建并验证构建器支持目标平台(如 linux/amd64、linux/arm64),再指定多平台并推送,buildx 自动构建并生成 manifest list;最后用 docker manifest inspect 验证,并推荐 Cosign 签名保障可信。
直接用 docker buildx build 配合 --platform 和 --push 就能实现一次编译、全架构分发,不需要手动拼 manifest 或分步构建。关键在构建器初始化、平台声明和推送机制三步到位。
新版 Docker(27.x+)默认启用 buildx,但仍需确认构建器已加载所需架构支持:
docker buildx create --use --name mybuilder --bootstrap 创建并激活构建器docker buildx inspect --bootstrap 查看输出中的 Platforms 字段,确认含 linux/amd64、linux/arm64 等目标项docker run --privileged --rm tonistiigi/binfmt:latest --install all
构建命令中明确指定所有需交付的架构,BuildKit 会自动调度对应平台的构建任务:
--platform linux/amd64,linux/arm64,linux/arm/v7 列出全部目标(逗号分隔,不加空格)--push 直接推送,buildx 会在上传完成后自动生成 application/vnd.docker.distribution.manifest.list.v2+json 清单docker buildx build --platform linux/amd64,linux/arm64 --tag ghcr.io/your-org/app:v1.0 --push .
推送完成后,通过 manifest 检查确认各架构已正确注册:
docker manifest inspect ghcr.io/your-org/app:v1.0,返回 JSON 中应包含多个 manifests 条目,每个含 platform.architecture 和对应 digest
docker pull ghcr.io/your-org/app:v1.0,Docker 引擎会自动拉取匹配本机架构的镜像层docker images 查看——它只显示本地缓存的单一架构镜像,不能反映远程 manifest 结构仅构建推送还不够,上线前应确保镜像完整性和清单可信:
docker manifest inspect 导出 JSON,再 cosign sign-blob --key cosign.key myapp-manifest.json
cosign verify-blob 校验 manifest list 本身未被篡改debian:bookworm-slim、ubuntu:22.04),避免因某架构缺失导致构建失败