科技 · 实用指南
Docker 报 no matching manifest?先证明请求平台,再强制架构
把主机或覆盖项的请求与标签的不可变镜像索引、操作系统、架构和 variant 对齐,再决定固定 digest、重发镜像或启用模拟。

“No matching manifest”表示 Docker 无法把实际平台请求与镜像索引中的兼容描述符对应起来。它本身不能证明电脑配置错误,也不能证明 `--platform linux/amd64` 安全。先保存匹配两端的证据。
冻结准确请求与镜像引用
保存失败命令、完整错误、镜像引用、Docker/Compose 版本、活动 context、客户端与 daemon 架构,以及环境、Compose 和构建配置中的所有平台覆盖。保留准确 tag 或 digest,暂时不要添加 `--platform`。
检查不可变索引
对实际注册表中的准确引用运行受支持的索引检查命令,记录媒体类型、索引 digest,以及每个描述符的 digest、OS、architecture、variant。若引用解析为单一 manifest,也要记录。
把请求与描述符连接起来
逐字段比较实际请求和描述符。`linux/amd64` 不匹配 `linux/arm64`,arm variant 也可能决定结果;unknown 平台的证明对象不是可运行变体。若无匹配项,区分发布缺失与 context、环境变量或服务配置改变请求。
按责任归属选择修复
原生描述符存在时,固定对应 digest 或修正陈旧选择策略。发布者自有镜像缺少变体时,重建该平台并发布完整索引。确需异构架构时显式声明模拟并测试;根本无支持变体时改用兼容标签。
把部署绑定到已审字节
记录选中的平台 manifest digest,必要时同时记录父索引 digest。让 Compose、CI 或部署策略显式表达平台选择。仅改标签是临时修复,因为标签可在两次检查间移动。
证明运行架构与可重复性
从干净缓存拉取,检查最终 digest 与架构,启动目标工作负载并核对其机器架构和健康。对每种支持主机重复。若 digest 漂移、模拟隐式发生、索引在发布中改变或发布者无法解释缺失变体,就停止。
