使用 docker manifest 创建跨平台多架构镜像,需先启用 docker 实验性功能,再通过 buildx 构建并推送多架构镜像,或手动创建、标注并推送 manifest 列表,最后验证 manifest 是否生效。

使用 docker manifest 创建跨平台多架构镜像,核心是先构建各平台的独立镜像(如 linux/amd64、linux/arm64),再用 docker manifest create 和 docker manifest push 将它们聚合为一个逻辑镜像名,让 docker pull 能根据运行环境自动拉取对应架构版本。
前提条件:启用 Docker 实验性功能
docker manifest 是实验性命令,需确保本地 Docker CLI 启用了实验特性:
- 编辑或创建
~/.docker/config.json,添加:{"experimental": "enabled"} - 重启 Docker Desktop(macOS/Windows)或重载 daemon(Linux)
- 运行
docker version查看 Client 下是否显示Experimental: true
构建各平台镜像(推荐使用 Buildx)
原生 docker build 默认只构建当前主机架构。要生成多架构镜像,建议用 docker buildx(更可靠、无需手动推多个 tag):
- 启用 Buildx 构建器:
docker buildx install&&docker buildx create --use --name mybuilder --bootstrap - 构建并推送多架构镜像(自动处理 manifest):
docker buildx build --platform linux/amd64,linux/arm64 -t yourname/app:latest --push . - 该命令会构建两个镜像、打上对应架构标签,并自动生成和推送 manifest 列表到仓库
手动管理 manifest(适用于已有单架构镜像)
若你已分别构建好不同架构的镜像(例如:yourname/app:latest-amd64 和 yourname/app:latest-arm64),可手动创建 manifest:
- 创建 manifest 列表:
docker manifest create yourname/app:latest yourname/app:latest-amd64 yourname/app:latest-arm64 - 为每个条目标注架构(必须!否则客户端无法识别):
docker manifest annotate yourname/app:latest yourname/app:latest-amd64 --arch amd64docker manifest annotate yourname/app:latest yourname/app:latest-arm64 --arch arm64 --os linux - 推送 manifest 列表:
docker manifest push yourname/app:latest
验证与调试
推送后可通过以下方式确认 manifest 是否生效:
- 查看 manifest 内容:
docker manifest inspect yourname/app:latest(输出 JSON,含manifests数组) - 在不同架构机器上执行
docker pull yourname/app:latest,检查拉取的是不是对应架构层 - 注意:Docker Hub 免费账户不支持私有仓库的 manifest list;建议用 GitHub Container Registry(GHCR)或自建 registry(需开启
manifests支持)











