Moby: لا يمكن فهم كيفية الحصول على image_id أو معلومات أخرى من المستودع الخاص

تم إنشاؤها على ١٥ مارس ٢٠١٧  ·  3تعليقات  ·  مصدر: moby/moby


معلومات تقرير الخطأ

وصف

نستخدم مستودع docker الخاص على docker hub ، عندما يكون لدينا أكثر من 10 صور.

نريد الحصول على معلومات صور عامل الإرساء من Docker hub للتمكن من مقارنة الصور التي تم إنشاؤها والمعروضة حاليًا على محور عامل الإرساء.

أحاول استخدام curl للحصول على رمز المصادقة عن طريق تشغيل الأوامر التي أجدها في google.

يبدو مثل:

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"}]}]}

صِف النتائج التي توقعتها:

Json التي تحتوي على معلومات حول الصور المعروضة حاليًا على صور Docker hub.

aredistribution kinquestion

ال 3 كومينتر

من المحتمل أن تكون المناقشة على https://github.com/docker/docker/issues/29257#issuecomment -266121974 مرتبطة هنا

مرحبًا westsouthnight ، ربما يمكن أن يساعدك هذا البرنامج النصي: https://gist.github.com/cirocosta/fb6b90cb7651ff21eda4838a73e3710b .
لا يستخدم -u لإجراء المصادقة الأساسية عند استرداد الرمز المميز ، لكنني اختبرت مع مستودع خاص وإضافة -u إلى get_token() { يعمل بالفعل: مع تسجيل خاص I يمكن استرداد التسجيل فقط إذا تم استخدام -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 التقييمات