我尝试将 Docker 映像推送到我的私有 Nexus 3 注册表。
在推送之前,我尝试验证操作:
docker login nexus_host:nexus_port
但是我收到以下错误消息:
来自守护程序的错误响应:登录尝试 http://nexus_host:nexus_port/v2/ 失败 状态:404 未找到
我的 Nexus 使用 HTTP,因此将其添加到 docker 不安全注册表列表中。
编辑(08/03/2018):
我使用托管的 Docker 存储库。我应该使用 HTTP 连接器吗?
回购配置:
格式:docker
类型:托管
网址:http://192.168.0.90:8082/repository/docker-repo/
HTTP 连接器端口:1111
登录尝试:
docker login 192.168.0.90:8082
=> 来自守护程序的错误响应:登录尝试 http://192.168.0.90:8082/v2/ 失败,状态:404 Not Found
docker login 192.168.0.90:1111
=> 来自守护进程的错误响应:获取 https://192.168.0.90:1111/v2/: 拨打 tcp 192.168.0.90:1111: getsockopt: 连接被拒绝
登录 docker 存储库的正确命令是
docker login 192.168.0.90:1111
,因为您已在端口 1111
上启用了 HTTP 连接器。
请确保您已在 Docker 存储库设置中选中强制基本身份验证,并使用与访问 Nexus Repository Manager 实例相同的凭据。
如果上述方法没有帮助,那么您应该关注导致连接被拒绝的原因 - 请检查您和 Nexus 阻塞端口
docker login
(您的 docker 存储库连接器端口)之间是否存在防火墙。
我在这里写下解决问题的正确步骤
1- 在运行 Nexus 镜像时,您应该添加两个端口,如下所示:
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
2-运行nexus后,使用管理员密码并登录UI
3- 转至设置 > 存储库并选择
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
。然后选择
Create Repository
并填写所需数据,如下图
docker(hosted)
更改
6-现在你可以使用用户名和密码登录docker到nexus