首页 > 解决方案 > 什么是“清单 blob 未知:注册表未知的 blob”错误

问题描述

我正在尝试将多架构 docker 映像推送到 docker hub 并遇到错误(在https://github.com/docker/distribution/issues/3100打开 docker 问题):

❯ docker build -t andig/evcc:latest-amd64 -f linux-amd64-.Dockerfile .
❯ docker build -t andig/evcc:latest-arm.v6 -f linux-arm-6.Dockerfile .
❯ docker push andig/evcc:latest-amd64
❯ docker push andig/evcc:latest-arm.v6
❯ docker manifest create --amend andig/evcc:latest andig/evcc:latest-amd64 andig/evcc:latest-arm.v6
❯ docker manifest annotate andig/evcc:latest andig/evcc:latest-amd64 --os=linux --arch=amd64
❯ docker manifest annotate andig/evcc:latest andig/evcc:latest-arm.v6 --os=linux --arch=arm --variant=v6
❯ docker manifest push andig/evcc:latest

failed to put manifest docker.io/andig/evcc:latest: errors:
manifest blob unknown: blob unknown to registry
manifest blob unknown: blob unknown to registry
manifest blob unknown: blob unknown to registry
manifest blob unknown: blob unknown to registry
manifest blob unknown: blob unknown to registry

搜索显示错误可能与“外部图层”(https://issues.sonatype.org/browse/NEXUS-11865)有关,但目前尚不清楚如何基于 Alpine 构建图像。

由于 docker github ticket 和一个论坛问题没有得到任何回应——我还能做些什么来进一步分析?例如,我怎样才能找出它在抱怨哪一层?

标签: dockerdocker-registry

解决方案


由于我怀疑我可能已推送到 docker hub 的清单存在某种问题,因此我开始使用干净的本地注册表重试该过程。按照这些步骤,我得到了同样的错误消息。

在这个阶段,我开始了另一轮谷歌搜索,它不仅建议--purge用于在本地清理清单(这对解决这个问题没有帮助),而且还建议通过删除来删除本地清单缓存~/.docker/manifests

删除清单文件夹后,注册表推送-本地和 docker hub-开始工作。


推荐阅读