لا يمكن سحب صورة Discourse الأساسية لأن تسجيل الدخول إلى Docker كان معطلاً

لقد تلقيت للتو هذا الخطأ الغريب أثناء محاولة التمهيد.

حدثت هذا الموقع قبل يومين دون أي مشاكل.

root@support:/var/discourse# ./launcher bootstrap multi

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

Unable to find image 'discourse/base:2.0.20200429-2110' locally
/usr/bin/docker: Error response from daemon: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: unauthorized: please use personal access token to login.
See '/usr/bin/docker run --help'.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
root@support:/var/discourse# docker version
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        481bc77
 Built:             Sat May  4 02:35:27 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.6
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       481bc77
  Built:            Sat May  4 01:59:36 2019
  OS/Arch:          linux/amd64
  Experimental:     false

root@support:/var/discourse# docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                  NAMES
1e63a91934e8        local_discourse/multi   "/sbin/boot"        2 days ago          Up 2 days           0.0.0.0:7777->80/tcp   multi
8681e70a72a0        local_discourse/data    "/sbin/boot"        4 months ago        Up 3 weeks                                 data
root@support:/var/discourse# docker ps

إنها نسخة متعددة المواقع مع Caddy كوكيل عكسي، لكنها تثبيت قياسي يعمل منذ سنوات.

ماذا يحدث عند تنفيذ أمر docker pull 'discourse/base:2.0.20200429-2110' بشكل مباشر؟

root@support:/var/discourse# docker pull 'discourse/base:2.0.20200429-2110'
خطأ في الاستجابة من الديمون: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: غير مصرّح: يرجى استخدام رمز وصول شخصي لتسجيل الدخول
root@support:/var/discourse# 

أيضًا:

root@support:/var/discourse# curl https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110
{"errors":[{"code":"UNAUTHORIZED","message":"المصادقة مطلوبة","detail":[{"Type":"repository","Class":"","Name":"discourse/base","Action":"pull"}]}]}
root@support:/var/discourse# 

يحاول خادم Docker المحلي الخاص بك المصادقة على مستودع ذلك. تحقق من تكوينه في ملف JSON.

يبدو هذا نصيحة حكيمة، لكنني لا أعرف كيف أتصرف بناءً عليها.

docker run -it --rm hello-world

يفشل بنفس الطريقة.

لقد قمت للتو بترقية Docker إلى الإصدار 19.03.8 (كنت أستخدم الإصدار 18.03 تقريبًا) وأعدت تشغيل النظام. عادت الحاويات الموجودة إلى العمل.

ليس لدي أدنى فكرة عما قد يكون تغير ليجعل هذا يفشل. لقد راجعت ملف /etc/docker/key.json ويبدو مشابهًا جدًا للملف الموجود على جهاز آخر.

البحث في Google عن: “docker unauthorized: please use personal access token to login for public repo” لا يساعد.

قد يُحلّ الأمر docker login مشكلتك.

يمكنك أيضًا مراجعة ملف ~/.docker/config.json للتحقق من السجلات التي تملك بيانات اعتماد لها. إذا لم تكن بحاجة لتسجيل الدخول، فيمكنك ببساطة حذفها من ذلك الملف.

هذا هو الحل!

ذهبت إلى إعدادات أمان Docker، وقمت بإنشاء رمز جديد، ثم نفذت أمر docker login --username pfaffman وألصقت المفتاح الجديد. لا أعرف سبب توقف الرمز القديم عن العمل فجأة أو سبب حاجتي إليه الآن. فقد قمت بالترقية قبل يومين فقط دون أي مشاكل.

شكرًا لك، مايكل!