带用户名的Docker镜像在Nexus缓存时拉取失败问题咨询
解决Nexus缓存Docker嵌套路径镜像拉取失败的问题
针对你遇到的问题,以下是几个可行的排查和解决步骤:
检查Nexus Docker代理的V1 API支持
你的Docker Engine版本是20.10.20,属于较老版本,部分镜像拉取请求可能仍依赖Docker V1 API。进入Nexus管理界面,找到对应的Docker代理仓库配置,勾选Allow Docker V1 API选项,保存后重启仓库服务,再尝试拉取镜像。确认Nexus代理仓库的路径配置
确保Docker代理仓库的Remote Storage设置为https://registry-1.docker.io,Repository Path保持为/,这样才能正确代理Docker Hub上所有路径的镜像。同时检查是否存在仓库路由规则限制了sameersbn/*这类嵌套路径的镜像,如果有,调整规则允许该路径的缓存。清理本地和Nexus缓存后重试
- 清理Docker本地缓存:
docker rmi server:8042/sameersbn/gitlab:15.0.3 2>/dev/null docker system prune -f - 登录Nexus管理界面,进入目标Docker代理仓库的
Browse页面,删除sameersbn/gitlab相关的缓存条目,然后重新执行拉取命令,让Nexus重新从Docker Hub获取并缓存镜像。
- 清理Docker本地缓存:
验证Docker daemon的镜像仓库配置
检查/etc/docker/daemon.json文件,确保Nexus作为镜像仓库的配置正确,没有冲突的规则。示例配置如下:{ "registry-mirrors": ["http://server:8042"] }修改后重启Docker服务:
systemctl restart docker,再尝试拉取操作。检查Nexus的网络连通性
在Nexus服务器上执行以下命令,确认能正常访问Docker Hub上目标镜像的manifest:curl https://registry-1.docker.io/v2/sameersbn/gitlab/manifests/15.0.3如果访问失败,排查Nexus的网络代理、防火墙设置,确保能正常获取镜像元数据。同时确认Nexus的Docker仓库允许匿名拉取,避免权限拦截问题。
内容的提问来源于stack exchange,提问作者trickster
相关产品推荐
相关产品推荐

