为什么Docker“血统”API命令不起作用?

DockerregistryAPI文档( 此处 )指出您可以执行: https://index.docker.io/v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/ancestryhttps://index.docker.io/v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/ancestry

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

您正在使用不正确的域。 从文档示例注意:

 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。 所以你的url应该是:

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

当我运行这个我不再得到一个404,而是得到一个授权错误。 这是因为您需要针对index.docker.io进行身份validation,然后针对registry_1.docker.io运行您的api。

这是没有很好的文件logging – 你可能会发现这个讨论有帮助:

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

从讨论:

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

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