首页/云/云与容器速查/docker manifest 查看多架构镜像
容器与 Docker106 条

docker manifest 查看多架构镜像

多架构镜像是一个『清单列表』:同一 tag 下按平台指向不同镜像。用 manifest inspect 或 buildx imagetools 查看实际包含哪些架构,避免拉错平台。

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

多架构镜像是什么

同一个镜像标签在多架构场景下并不指向一个镜像,而是指向一份“清单列表”(manifest list,OCI 规范里叫镜像索引),里面按操作系统与架构分别记录对应的镜像摘要。拉取时运行时读取本机平台,自动挑出匹配的那一份,所以同一个标签在 x86 与 ARM 上跑的是两个不同构建产物。排查架构相关问题、做多平台发布之前,先用清单查看工具确认这份清单里到底有哪些平台。

基本信息

适用平台Docker 20.10 起 docker manifest 可直接使用,老版本 CLI 需开启实验特性
推荐工具docker buildx imagetools inspect,默认可用且输出更直观
清单内容按 os、architecture、variant 列出各平台镜像的摘要与大小
拉取规则运行时按本机平台自动选择,可用 --platform 显式指定
推送规则多平台镜像要用 buildx --platform 构建并直接推送,本地仓库看不到
典型报错exec format error 表示拉到的镜像与当前平台不匹配

典型使用场景

  • 确认某个官方镜像是否包含 arm64,避免在 ARM 服务器上踩坑
  • 多平台发布前检查清单里的平台是否齐全、摘要是否最新
  • 排查 exec format error 时,先看镜像清单再考虑 binfmt 兜底
  • 给不同架构的节点统一使用同一个标签,降低发布配置复杂度
  • 对比同一标签不同架构镜像的大小,评估分发与存储成本

使用示例

使用示例
docker manifest inspect nginx:1.27 | head -40   # 看清单里的平台列表
docker buildx imagetools inspect nginx:1.27   # 推荐:输出更直观
docker buildx imagetools inspect myapp:1.2.3 --raw | head -40   # 看原始清单 JSON
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:1.2.3 --push .   # 打多平台并推送
docker pull --platform linux/arm64 nginx:1.27   # 指定平台拉取用于验证

常见平台字段

字段含义注意
os操作系统linux 与 windows 不能混用同一清单
architecture架构amd64、arm64、arm 等
variant架构变体如 arm64 的 v8
mediaType清单类型索引类型表示这是多架构清单
digest镜像摘要平台不同摘要不同,可用于核对是否更新
在 ARM 机器上拉到 amd64 镜像会报 exec format error:先确认清单里有没有对应架构,再考虑用 binfmt/QEMU 兜底,后者性能有损耗。
本地 docker build 生成的镜像只有本机架构:要出多平台产物必须用 buildx 指定平台列表,并直接推送或导出,本地镜像列表里不会出现多架构条目。

易错点

  • 本地 build 的镜像直接推仓库:只有本机架构,ARM 节点拉下来直接跑不动
  • 看标签相同就以为行为一致:不同架构可能来自不同基础镜像,依赖与版本都不同
  • 老版本 CLI 直接跑 docker manifest 子命令:实验特性未开导致不可用,改用 buildx imagetools
  • 多平台构建忘记加 --push:结果只留在构建缓存里,本地看不到镜像
  • 用多架构镜像跑带本地编译产物挂载的服务:二进制架构与运行时不一致,启动即失败

数据来源与参考

  • Docker Docs:docker manifest
  • Docker Docs:docker buildx imagetools

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌