为什么Docker"祖先" API命令不起作用?

时间:2015-02-06 20:08:18

标签: api registry docker

Docker Registry API文档(here)声明您可以执行以下操作: https://index.docker.io/v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/ancestry

然而,这(我已经尝试了几个图像ID)只产生404.为什么?

1 个答案:

答案 0 :(得分:2)

您使用的是不正确的域名。请注意文档示例:

GET /v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/ancestry HTTP/1.1
    Host: registry-1.docker.io
    Accept: application/json
    Content-Type: application/json
    Cookie: (Cookie provided by the Registry)

您应该使用registry-1.docker.io,而不是index.docker.io。所以你的网址应该是:

https://registry-1.docker.io/v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/ancestry

当我运行此操作时,我不再获得404,而是获得授权错误。这是因为您需要对index.docker.io进行身份验证,然后针对registry-1.docker.io运行您的api。

没有详细记录 - 您可能会发现此讨论很有用:

https://forums.docker.com/t/registry-hub-api-is-buggy/732

来自讨论:

  

registry-1.docker.io是用于存储图像的docker-registry,   此API是公开的,但需要授权。

     

index.docker.io是现在称为RegistryHub的“索引”,这个标签   端点不公开,可能随时更改。我不会用   这个,因为它仅供内部使用,可能没有改变   警告。