【发布时间】:2019-08-11 15:33:33
【问题描述】:
How to authenticate with the V2 API 有用且有效。
REPO="https://hub.docker.com/v2"
我能够获取令牌、列出(我的)存储库并列出它们的图像和标签。
curl --silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/
curl --silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/${IMAGE}/tags/
我想“获取清单”,但我很难让它发挥作用: https://docs.docker.com/registry/spec/api/#manifest:
curl --silent \
--header "Host: hub.docker.com" \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/${IMAGE}/manifests/
curl --silent \
--header "Host: hub.docker.com" \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/${USERNAME}/${IMAGE}/manifests/
curl --silent \
--header "Host: hub.docker.com" \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/${USERNAME}/${IMAGE}/manifests/${TAG}
我试过不带Host 标头。带有 Host 标头的各种值。但是,我显然错过了一些东西。我尝试对工作端点进行模式匹配,但没有任何乐趣:
curl --silent \
--header "Authorization: JWT ${TOKEN}" \
${REPO}/repositories/${USERNAME}/${IMAGE}/manifests/
奇怪的是,此页面显示的“GET TAGS”似乎错误地显示为/v2/<name>/tags/list:
https://docs.docker.com/registry/spec/api/#tags
评论: https://stackoverflow.com/a/45605443/609290
跟进
我是 Google 员工,可以访问 Google Container Registry (GCR)。
REPO="https://gcr.io/v2/"
一时兴起,我刚刚尝试了针对 GCR 的“GET MANIFEST”并且请求有效:
curl --silent \
--request GET \
--user _token:$(gcloud auth print-access-token) \
${REPO}/${PROJECT}/${IMAGE}/manifests/${TAG}
【问题讨论】:
标签: docker-registry