我们正在尝试在Kubernetes群集中的Nexus OSS(v3.3.2-02)中设置Docker存储库,并且在登录时遇到问题。我们打算使用以下配置为DockerHub设置代理,私人仓库和组合仓库将两者捆绑在一起
给我们以下列表:
但是当我尝试登录存储库时,它似乎试图将我转发到/v2
端点,这会导致404错误:
> docker login -u <user> -p <pass> https://repo.myhost.com:443
Error response from daemon: login attempt to https://repo.myhost.com:443/v2/ failed with status: 404 Not Found
我想补充一点,我们在同一个实例中设置了Maven和NPM存储库并且它们正在工作,所以看起来Nexus本身没问题,但是Docker配置有问题。
我不知道为什么此请求在尝试登录时尝试将我发送到/v2
端点。我错过了什么?
答案 0 :(得分:0)
在我刚刚运行的实验中(docker-machine,virtualbox,macOS),当服务器为1.13.1时(与docker cli一样),它从{{1向下/v2
,如下:
/v1
但在我将服务器升级到17.06.0-ce(仍然是1.13.1 cli)之后,它只尝试level=debug msg="Calling GET /_ping"
level=debug msg="Calling GET /v1.26/version"
level=debug msg="Calling GET /_ping"
level=debug msg="Calling GET /v1.26/version"
level=debug msg="Calling GET /_ping"
level=debug msg="Calling GET /v1.26/info"
level=debug msg="Calling POST /v1.26/auth"
level=debug msg="attempting v2 login to registry endpoint https://192.168.2.103:9999/v2/"
level=info msg="Error logging in to v2 endpoint, trying next endpoint: Get https://192.168.2.103:9999/v2/: EOF"
level=debug msg="attempting v1 login to registry endpoint https://192.168.2.103:9999/v1/"
level=info msg="Error logging in to v1 endpoint, trying next endpoint: Get https://192.168.2.103:9999/v1/users/: dial tcp 192.168.2.103:9999: getsockopt: connection refused"
level=error msg="Handler for POST /v1.26/auth returned error: Get https://192.168.2.103:9999/v1/users/: dial tcp 192.168.2.103:9999: getsockopt: connection refused"
然后退出:
/v2
所以答案似乎是要么需要教Nexus正确响应level=debug msg="Calling GET /_ping"
level=debug msg="Calling GET /_ping"
level=debug msg="Calling GET /v1.30/version"
level=debug msg="Calling GET /_ping"
level=debug msg="Calling GET /v1.30/info"
level=debug msg="Calling POST /v1.30/auth"
level=debug msg="attempting v2 login to registry endpoint https://192.168.2.103:9999/v2/"
level=info msg="Error logging in to v2 endpoint, trying next endpoint: Get https://192.168.2.103:9999/v2/: tls: oversized record received with length 21584"
level=error msg="Handler for POST /v1.30/auth returned error: Get https://192.168.2.103:9999/v2/: tls: oversized record received with length 21584"
端点(因为它确实应该已经做了),或者将dockerd降级回到说{的版本{1}} api如果这是您之后的行为
答案 1 :(得分:0)
不确定这是否有帮助,但是基于浏览器的URL中没有端口号,可以使用我的凭据登录。下面是基于浏览器的示例网址。
但是我必须输入以下内容
docker login -u -p https://nexus.mysite.net/
我受到以下欢迎
守护程序的错误响应:尝试登录https://nexus.mysite.net/v2/失败,状态为:404未找到
提供正确的端口号没有出现以上错误,我可以按如下所示从CLI登录。
docker login -u用户名-p密码https://nexus.mysite.net:7000
(在我的情况下,正确的端口号是7000)。
希望这会有所帮助。
答案 2 :(得分:0)
Docker需要非常特定的URL布局,并且不允许任何上下文URL,因此需要Docker连接器以允许Docker客户端连接到NXRM。屏幕快照显示您已在端口444上为Docker托管存储库配置了Docker连接器,但终端捕获显示您正在尝试在不是Docker连接器端口的端口443上进行连接。您所显示的错误消息表明您的NXRM服务器确实在端口443上运行,但是由于Docker的工作方式,您需要使用端口444对其进行访问。请尝试:docker login -u <user> -p <pass> https://repo.myhost.com:444
,以便它尝试使用Docker连接器端口。另外,最好运行最新版本的Nexus。