【问题标题】:How to get the authorization working on an HTTP API request (v2) to Dockerhub如何获得对 Dockerhub 的 HTTP API 请求 (v2) 的授权
【发布时间】:2019-05-22 00:18:27
【问题描述】:

我不确定我这样做是否正确。我正在使用此代码获取公共图像的标签列表:

export TOKEN=$(curl -S https://auth.docker.io/token\?service\=registry.docker.io\&scope\=repository:fedora:pull | awk -F'"' '{print $4}')
curl -S -H "Authorization: Bearer $TOKEN" \
https://registry-1.docker.io/v2/library/fedora/tags/list

但它总是返回{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"library/fedora","Action":"pull"}]}]}

我想知道如何正确使用此授权。我的代码基于https://github.com/docker/hub-feedback/issues/1253,我的最终目标是在私人组织中获得完整的存储库和映像集,但首先我需要了解它是如何工作的。

提前感谢您提供的任何帮助。

https://github.com/docker/hub-feedback/issues/1253

【问题讨论】:

    标签: docker dockerhub


    【解决方案1】:

    查看我写的关于此的帖子:

    https://medium.com/google-cloud/adventures-w-docker-manifests-78f255d662ff

    REPO="https://hub.docker.com/v2"
    USER=[[YOUR-DOCKER-USERNAME]]
    PASS=[[YOUR-DOCKER-PASSWORD]]
    TOKEN=$(\
      curl \
      --silent \
      --header "Content-Type: application/json" \
      --request POST \
      --data '{"username": "'${USER}'", "password": "'${PASS}'"}' \
      ${REPO}/users/login/ \
      | jq -r .token\
    ) && echo ${TOKEN}
    curl \
    --silent \
    --header "Authorization: JWT ${TOKEN}" \
    ${REPO}/repositories/${USER}/?page_size=100 \
    | jq -r '.results|.[]|.name'
    
    curl \
    --silent \
    --header "Authorization: JWT ${TOKEN}" \
    ${REPO}/repositories/${USER}/${IMAGE}/tags/
    

    【讨论】:

    • 谢谢!它使用了另一种方法,但是对于我需要的东西来说效果很好。谢谢!
    猜你喜欢
    • 2018-08-15
    • 2019-05-17
    • 2014-04-19
    • 2018-12-28
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多