为什么这个刷新标记请求auth.docker.io返回一个404?

我正在尝试使用这里logging的API: https : //docker.github.io/registry/spec/auth/oauth/

当我按照文档中的描述发布到服务时,它总是返回一个404。

我已经尝试使用我自己的帐户,也使用文档中的确切查询。

这里是一个例子:

[prompt]$ curl -v \ -H 'Content-Type: application/x-www-form-urlencoded' \ -X POST -d 'grant_type=password&username=johndoe&password=A3ddj3w&service=hub.docker.io&client_id=dockerengine&access_type=offline' \ https://auth.docker.io/token * Trying 52.5.234.85... * Connected to auth.docker.io (52.5.234.85) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 * Server certificate: *.docker.io * Server certificate: RapidSSL SHA256 CA - G3 * Server certificate: GeoTrust Global CA POST /token HTTP/1.1 Host: auth.docker.io User-Agent: curl/7.43.0 Accept: / Content-Type: application/x-www-form-urlencoded Content-Length: 118 upload completely sent off: 118 out of 118 bytes < HTTP/1.1 404 Not Found < Content-Type: text/plain; charset=utf-8 < X-Content-Type-Options: nosniff < Date: Fri, 04 Nov 2016 01:10:14 GMT < Content-Length: 19 < Strict-Transport-Security: max-age=31536000 < 404 page not found Connection #0 to host auth.docker.io left intact 

使用活动帐户的凭据时,会返回相同的响应。 如果账户没有通过validation,我似乎至less应该收到401。

这个服务不再被支持吗?

有一个GET API,我可以用来获取一个短暂的不记名令牌,但我需要一个刷新令牌。 GET apilogging在这里: https : //docs.docker.com/registry/spec/auth/jwt/

我遇到了同样的问题。 我会先把解决scheme,以后的额外信息。

 DOCKER_HUB_USERNAME=$1 DOCKER_HUB_PASSWORD=$2 DOCKER_REPO=$3 AUTH_64=$(echo -n $DOCKER_HUB_USERNAME:$DOCKER_HUB_PASSWORD | base64) TOKEN=$(curl -s -H "Authorization: Basic $AUTH_64" \ -H 'Accept: application/json' \ "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$DOCKER_REPO:pull" | jq -r .token) curl -s -H "Authorization: Bearer $TOKEN" -H "Accept: application/json" \ "https://index.docker.io/v2/$DOCKER_REPO/tags/list" | jq -r .tags 

我做了一些挖掘,发现这个答案 ,要求您使用dockerlogin,这不是我想要的。 在查看docker的conf文件后,我发现这个值是user:pass base64的base64编码。 所以我只是避免试图获得刷新令牌。

我用jq来获取json值。 这是一个下载链接 。 你可以检索他们,但是你想要的。 我举了第二个命令作为例子,虽然这应该适用于v2 API中的任何东西。 我想你甚至可以用任何dockerregistryreplaceindex.docker.io

哦,如果你需要push访问,一定要改变$DOCKER_REPO:pull to $DOCKER_REPO:pull,push