问题描述
我有一个docker login命令,我偶尔使用docker login repos.server.com
,直到最近都运行良好。
我尝试了一个实验,其中我在登录名中尝试了其他服务器(请注意/ v2 /已添加到服务器arg)-docker login repos.server.com/v2/
失败了,很好,只是我在尝试一些东西。但是,现在,无论何时我尝试运行原始命令,而没有在末尾带有/ v2 /的服务器时,都会出现错误,并且得到的响应表明它仍在尝试使用/ v2来达到服务器的版本/。 所以在原始命令起作用之前,现在我得到一个例外:
C:\Users\me\Desktop\Docker\yaml\AThing>docker login repos.server.com
Authenticating with existing credentials
Login did not succeed,error: Error response from daemon: Get https://repos.server.com/v2/: dial tcp 123.45.67.890:443: connect: no route to host
您可以在该错误中看到它似乎仍在尝试打/ v2 /,即使这不再是我传递给命令的内容。我应该清除某种缓存或配置以使其尊重原始服务器吗?
我已经与另一位同事确认,我正在尝试的命令对他来说很好用
解决方法
/v2/
是registry api的一部分。每个对注册表进行身份验证的请求都将转到注册表主机上的该路径,并且与先前的测试没有任何关系。您的问题似乎与网络访问有关,因此,我将从curl -i https://$registry_host/v2/
开始,并确保获得预期的结果,例如击中docker hub:
$ curl -i https://registry-1.docker.io/v2/
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Docker-Distribution-Api-Version: registry/2.0
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io"
Date: Tue,15 Sep 2020 18:37:37 GMT
Content-Length: 87
Strict-Transport-Security: max-age=31536000
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
您应该在良好的请求中看到一个Www-Authenticate
标头。