如何使用注册表http api v2列出docker镜像存储库?

时间:2017-08-09 11:05:11

标签: docker dockerhub

我正在尝试使用api版本2获取docker注册表中的repositry列表。

我的目标是从我拥有的docker hub获取存储库。

首先,我使用基本身份验证从身份验证服务器“https://auth.docker.io/token?service=registry.docker.io

获取承载令牌

然后我打电话使用此持有人令牌“https://index.docker.io/v2/_catalog”获取回购列表。但我得到了未经授权的错误。任何想法都可能是原因。

2 个答案:

答案 0 :(得分:0)

我发现虽然获取存储库列表的调用是正确的,但这个api在dockerhub中被故意阻止。 Docker hub拥有巨大的存储库列表,可能由于这个原因他们阻止了这个被调用。或者,您可以使用docker v1中的搜索API。

答案 1 :(得分:0)

通过GOLang code,发现API遵循RFC 2616 section 14.8。该安全性使用带有“基本”身份验证令牌的HTTP授权标头。

使用PowerShell列出历史记录的示例。

  1. 使用docker CLI制作凭据

    docker login --username myuseraccount --password secretpassword

    cat([IO.Path] :: Combine($ env:USERPROFILE,'.docker \ config.json'))

  2. 将基本令牌从config.json复制到剪贴板。

  3. 列出您的Azure存储库。在Basic令牌和base64编码令牌之间需要空格。

    Invoke-RestMethod -Uri https:// YOURAZUREREGISTY .azurecr.io / v2 / _catalog -Method Get -Headers @ {'Authorization'='Basic PASTEBASE64BASICTOKENFROM2 ' }