无法登录Nexus Docker私有仓库,连接被拒绝问题求助
问题分析与解决步骤
1. 当前错误与密码无关
你遇到的connection refused错误是网络连接层面的问题,还没到认证环节,所以和密码没有关系。先解决连接问题,再考虑认证相关内容。
2. 排查连接失败的核心原因
(1)检查Docker Compose的端口映射
确认你的docker-compose.yml中,是否将Nexus容器内的Docker仓库端口(比如你配置的5000)映射到了宿主机:
services: nexus: image: sonatype/nexus3 ports: - "8081:8081" # Nexus Web UI端口 - "5000:5000" # Docker仓库的HTTP端口,必须和仓库配置的端口一致 volumes: - nexus-data:/nexus-data
如果没有添加5000:5000的映射,宿主机无法访问容器内的5000端口,就会出现连接拒绝。
(2)验证Nexus仓库的端口配置
对照你的仓库配置截图,确认Docker Hosted仓库的HTTP端口确实是5000。如果仓库配置的是其他端口,login时要使用对应端口。
(3)测试端口连通性
- 在宿主机上执行
curl http://<nexus-ip>:5000/v2/,如果返回{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"type":"repository","name":"你的仓库名"}]}]},说明端口连通正常,只是需要认证;如果还是连接拒绝,继续下一步。 - 检查宿主机的防火墙/安全组,确保5000端口已经开放,允许外部(或本地)访问。
- 进入Nexus容器内部测试:
docker exec -it <nexus容器ID> curl http://localhost:5000/v2/,如果容器内也无法访问,说明Nexus的Docker仓库配置有误,需要重新检查仓库的启用状态和端口设置。
3. 关于Docker仓库的认证密码
- Docker Hosted仓库不需要单独设置密码,认证使用的是Nexus系统的用户账号密码,你用admin账号是正确的,但需要确保admin用户拥有该Docker仓库的权限(比如
nx-repository-view-docker-*相关权限)。 - 如果后续解决连接问题后出现认证失败,可以:
- 检查Nexus中admin用户的权限配置,确保给该用户分配了对应Docker仓库的读写/只读权限;
- 重置admin密码:进入Nexus容器,查看初始密码文件
cat /nexus-data/admin.password,登录后修改为自定义密码。
4. 完善insecure-registries配置
你已经添加了insecure-registries配置,但需要注意:
- 配置后必须重启Docker守护进程才能生效:
sudo systemctl restart docker - 确保配置的地址
nexus-ip:5000和你login时使用的ip:port完全一致,不要有IP或端口的差异。
内容的提问来源于stack exchange,提问作者Tisighe Livinstone
相关产品推荐
相关产品推荐

