Docker 图片拉取失败,未找到:清单

Docker image pull fails with not found: manifest

我在 CentOS-7.9 主机上使用 Docker version 20.10.8, build 3967b7d 并且 Sonatype Nexus Repository Manager version - OSS 3.30.1-01 被用作私有 docker 注册表。当我尝试使用 docker-compose 拉取图像时,它总是失败并出现以下错误。

$ docker-compose up -d
Pulling prometheus (internal-registry.com:8335/prometheus:latest)...
ERROR: manifest for internal-registry.com:8335/prometheus:latest not found: manifest unknown: manifest unknown

来自 Sonatype Nexus server log 的错误如下。

2021-10-11 10:35:41,307+0530 WARN  [qtp657241891-125]  admin org.sonatype.nexus.repository.docker.internal.V2Handlers - Error: HEAD /v2/library/prometheus/manifests/latest: 401 - org.sonatype.nexus.repository.docker.internal.V2Exception: authentication required
2021-10-11 10:35:42,106+0530 WARN  [qtp657241891-560]  admin org.sonatype.nexus.repository.docker.internal.V2Handlers - Error: GET /v2/library/prometheus/manifests/latest: 401 - org.sonatype.nexus.repository.docker.internal.V2Exception: authentication required.

Docker主机docker login to our private registry成功。

1) Repo - Allow clients to use the V1 API to interact with this repository (Tick mark enabled).
2) DockerHub(Proxy) - Allow clients to use the V1 API to interact with this repository (Tick mark enabled).
3) Group - Allow clients to use the V1 API to interact with this repository (Tick mark enabled).

4) Nexus UI > Security > Anonymous Access > Allow anonymous users to access the server - (Tick mark enabled).
Username: anonymous
Realm: Local Autherizing Realm

5) Nexus UI > Security > Role > Create role > Create Nexus role > Created new role
Privileges: nx-repository-view-*-*-*-broswe
            nx-repository-view-*-*-*-read
Roles: Contained - nx-anonymous

6) Nexus UI > Security > Users > anonymous(Active)
         Roles: Granted: read_and-browse

7) Nexus UI > Security > Realms - Docker Bearer Token Realm (Is in Active List) 

拉取 docker 图像时仍然出现 not found: manifest unknown: manifest unknown 错误。我该如何解决这个问题?任何指针都会有所帮助。谢谢!

这看起来像是某种 network/memory/hardware 问题,可能在内部 -registry.com,假设 prometheus 是该注册表上的可用映像。我会先对该服务进行负载测试,然后验证dns,然后是防火墙,然后是内存,然后是电源,然后是该服务的硬件以对其进行故障排除。

最后,我会尝试在另一个环境中重新创建此错误,再次针对内部 -registry.com。如果不能,则问题出在 docker 客户端,但我怀疑您可以在其他客户端上复制此问题。

  1. 确保docker图像(上面是错误的)。

  2. 这个 Link 帮助在 Nuxus 端的 Repository 上创建了 Read & Browse 特权。 Post 拉取镜像成功