Docker登录Nexus仓库报错求助:访问/v2/路径返回404 Not Found
这个问题我之前帮同事排查过,核心原因是你混淆了Nexus的控制台端口和Docker仓库的访问端口——8081是给Web管理界面用的,Docker客户端要连接的是专门配置的Docker仓库端点。按下面的步骤来解决:
解决步骤
1. 在Nexus控制台配置专属的Docker仓库
- 登录你的Nexus控制台:
http://192.168.33.60:8081/ - 点击左侧菜单栏的
Repository->Repositories - 点击右上角的
Create repository,选择docker (hosted)类型(如果是搭建私有仓库选hosted,代理公共镜像选proxy,整合多个仓库选group) - 填写关键配置:
- Name:自定义一个仓库名,比如
docker-private - HTTP:设置一个和8081不冲突的端口,比如
8082(这就是后续Docker要连接的端口) - 其他选项按需调整,比如是否允许匿名拉取、是否开启推送权限等
- Name:自定义一个仓库名,比如
- 保存配置,确认仓库状态显示为
Online
2. 验证Docker仓库端口的连通性
在要登录的虚拟机上,先测试端口是否能正常访问:
# 用curl测试v2接口是否存在 curl http://192.168.33.60:8082/v2/
如果返回{}或者类似的空JSON响应,说明接口已经正常运行了。
3. 用正确的地址执行docker login
现在用你刚才配置的Docker仓库端口登录:
docker login 192.168.33.60:8082
输入Nexus的用户名和密码(需要确保这个账号有该Docker仓库的访问权限,比如默认的nx-admin,或者你专门创建的有推送/拉取权限的用户),这时候应该就能成功登录了。
额外提醒
- 如果你的Nexus是用Docker容器部署的,别忘了启动容器时映射这个新端口,比如加上参数:
-p 8082:8082,否则外部虚拟机访问不到这个端口 - 如果你不想单独开端口,也可以配置Docker仓库使用路径前缀(比如
/docker),这时候登录地址是http://192.168.33.60:8081/docker,但这种方式需要额外调整Docker的insecure-registries配置,不如单独开端口直接方便
内容的提问来源于stack exchange,提问作者Ashwani




