Moby: image_id またはその他の情報フォームのプライベート リポジトリを取得する方法を理解できません

作成日 2017年03月15日  ·  3コメント  ·  ソース: moby/moby


バグレポート情報

説明

10 個以上のイメージがある場合は、Docker Hub で docker プライベート リポジトリを使用します。

Docker Hub でビルドされたイメージと現在表示されているイメージを比較できるように、Docker ハブから Docker イメージ情報を取得したいと考えています。

Googleで見つけたコマンドを実行して、認証トークンを取得するためにcurlを使用しようとしています。

それは次のように見えます:

UNAME="exampleuser"
UPASS="examplepass"
PRODUCT="examplecompany"
REPOSITORY="$PRODUCT"
SERVICE="exampleservice"

次の方法でトークンを取得しようとしています。

TOKEN=$(curl -u $UNAME:$UPASS "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$REPOSITORY:pull&account=$UNAME" | jq -r .token)

TOKEN=$(curl -u $UNAME:$UPASS "https://auth.docker.io/token?service=index.docker.io&scope=repository:$REPOSITORY:pull&account=$UNAME" | jq -r .token)

TOKEN=$(curl -u $UNAME:$UPASS "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$REPOSITORY:pull&account=$UNAME&offline_token=true" | jq -r .token)

TOKEN=$(curl -u $UNAME:$UPASS "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$REPOSITORY:$SERVICE:pull&account=$UNAME&offline_token=true" | jq -r .token)

TOKEN=$(curl -u $UNAME:$UPASS "https://auth.docker.io/token?service=registry.docker.io&scope=repository:$REPOSITORY:$SERVICE&account=$UNAME&offline_token=true" | jq -r .token)

いずれの場合も、次の方法でトークンを取得し、プライベート リポジトリからマニフェストを取得しようとします。

1.

REPO="$PRODUCT/$SERVICE"
TAG=latest
REGISTRY=https://registry-1.docker.io/v2

URI="$REGISTRY/$REPO/manifests/$TAG"
echo URI=$URI
MANIFEST="`curl -skL -o /dev/null -D- $URI`"
CHALLENGE="`grep "Www-Authenticate" <<<"$MANIFEST"`"
if [[ CHALLENGE ]]; then
    IFS=\" read _ REALM _ SERVICE _ SCOPE _ <<<"$CHALLENGE"
    echo REALM is $REALM
    echo SERVICE is $SERVICE
    echo SCOPE is $SCOPE
    TOKEN="`curl -skL "$REALM?service=$SERVICE&scope=$SCOPE"`"
    IFS=\" read _ _ _ TOKEN _ <<<"$TOKEN"
    echo TOKEN is $TOKEN
    MANIFEST="`curl -isk -X GET -H "Authorization: Bearer $TOKEN" $URI`"
    echo "RESPONSE is $MANIFEST"
fi

2.

curl -s -D - -H  "Authorization: Bearer ${TOKEN}" -H "Accept: application/vnd.docker.distribution.manifest.v2+json" https://index.docker.io/v2/repositories/$PRODUCT/$SERVICE/manifests/latest

常に得る

RESPONSE is HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="examplecompany/exampleservice:pull",error="insufficient_scope"
Date: Wed, 15 Mar 2017 16:15:52 GMT
Content-Length: 155
Strict-Transport-Security: max-age=31536000

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"examplecompany/exampleservice","Action":"pull"}]}]}

Docker Hub から必要な情報をすべて取得する方法を修正するには?

経由でタグを取得しようとすると

REPO_LIST=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/${PRODUCT}/?page_size=10000 | jq -r '.results|.[]|.name')

問題はありません。

また、自分がやりたいことをするための作業方法が見つかりません。

問題を再現する手順:

  1. hub.docker.com にプライベート イメージを作成します。
  2. 認証トークンを取得
  3. hub.docker.com からマニフェスト情報またはその他の画像情報を取得してみてください。

得られた結果を説明してください:

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"examplecompany/exampleservice","Action":"pull"}]}]}

期待した結果を説明してください:

Docker Hub イメージに現在表示されている情報を含む Json。

aredistribution kinquestion

全てのコメント3件

https://github.com/docker/docker/issues/29257#issuecomment -266121974 に関する議論はおそらくここに関連しています

やあ@westsouthnight 、このスクリプトが役立つかもしれません: https://gist.github.com/cirocosta/fb6b90cb7651ff21eda4838a73e3710b
トークンを取得するときに基本認証を実行するために-uを使用しませんが、プライベート リポジトリでテストし、 -uget_token() {に追加すると実際に機能します。 -uが使用されている場合にのみレジストリを取得できます。

  curl \
    -u user:pass \
    --silent \
    "https://auth.docker.io/token?scope=repository:$image:pull&service=registry.docker.io" \
    | jq -r '.token'

それが役立つかどうか教えてください👍

GitHub の問題追跡ツールは一般的なサポート フォーラムを意図したものではないため、この問題をクローズさせてください
ただし、バグと機能のリクエストを報告するためです。 他のタイプの質問については、次のいずれかの使用を検討してください。

この質問は、このリポジトリのソース コードには直接関係していませんが、Docker Hub (およびそこで使用されている認証) に関係しています。 でも気軽に会話を続けてね👍

このページは役に立ちましたか?
0 / 5 - 0 評価