صور Docker الخاصة بـ Discourse غير موقعة

مرحبًا،

أنا أحاول حاليًا إعداد Discourse على جهاز جديد. قمت باستخراج مستودع discourse_docker وقمت بتشغيل الأمر ./launcher rebuild app. (تخطيت عملية التمهيد لأن لدي إعدادات سابقة).

أدى إعادة البناء إلى المخرجات التالية:

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

ERRO[0001] Metadata for targets expired
ERRO[0002] Metadata for targets expired
/usr/bin/docker: Error: remote repository docker.io/discourse/base out-of-date: targets expired at Mon Nov 18 12:52:09 -0500 2019.
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

للتوصل إلى جذر المشكلة، قمت بفحص الأمر الذي يتم تنفيذه وشغّله في وضع التصحيح:

/usr/bin/docker --debug run -i --rm -a stdout -a stderr discourse/base:2.0.20191219-2109 echo working

انظر: discourse_docker/launcher at 1b3dd3a41b544592be46b39db563bb757f88bbad · discourse/discourse_docker · GitHub

مخرجات الأمر:
DEBU[0000] reading certificate directory: /root/.docker/tls/notary.docker.io
DEBU[0000] No yubikey found, using alternative key storage: no library found
DEBU[0000] Making dir path: /root/.docker/trust/tuf/docker.io/discourse/base/changelist
DEBU[0000] entered ValidateRoot with dns: docker.io/discourse/base
DEBU[0000] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
DEBU[0000] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000] found 1 leaf certs, of which 1 are valid leaf certs for docker.io/discourse/base
DEBU[0000] checking root against trust_pinning config for docker.io/discourse/base
DEBU[0000] checking trust-pinning for cert: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000]  role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000] root validation succeeded for docker.io/discourse/base
DEBU[0000] entered ValidateRoot with dns: docker.io/discourse/base
DEBU[0000] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
DEBU[0000] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000] found 1 leaf certs, of which 1 are valid leaf certs for docker.io/discourse/base
DEBU[0000] checking root against trust_pinning config for docker.io/discourse/base
DEBU[0000] checking trust-pinning for cert: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000]  role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0000] root validation succeeded for docker.io/discourse/base
DEBU[0000] updating TUF client
DEBU[0000] Loading timestamp...
DEBU[0001] 200 when retrieving metadata for timestamp
DEBU[0001] timestamp role has key IDs: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
DEBU[0001] verifying signature for key ID: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
DEBU[0001] timestamp role has key IDs: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
DEBU[0001] verifying signature for key ID: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
DEBU[0001] successfully verified downloaded timestamp
DEBU[0001] Loading snapshot...
DEBU[0001] snapshot role has key IDs: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
DEBU[0001] verifying signature for key ID: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
DEBU[0001] successfully verified cached snapshot
DEBU[0001] Loading targets...
DEBU[0001] no targets in cache, must download
DEBU[0001] 200 when retrieving metadata for targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7
DEBU[0001] targets role has key IDs: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
DEBU[0001] verifying signature for key ID: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
ERRO[0001] Metadata for targets expired
DEBU[0001] downloaded targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7 is invalid: targets expired at Mon Nov 18 12:52:09 -0500 2019
DEBU[0001] Client Update (Targets): targets expired at Mon Nov 18 12:52:09 -0500 2019
DEBU[0001] Error occurred. Root will be downloaded and another update attempted
DEBU[0001] Resetting the TUF builder...
DEBU[0001] entered ValidateRoot with dns: docker.io/discourse/base
DEBU[0001] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
DEBU[0001] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001] found 1 leaf certs, of which 1 are valid leaf certs for docker.io/discourse/base
DEBU[0001] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
DEBU[0001] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001] found 1 valid root leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001]  role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001] checking root against trust_pinning config for docker.io/discourse/base
DEBU[0001] checking trust-pinning for cert: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001]  role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
DEBU[0001] root validation succeeded for docker.io/discourse/base
DEBU[0001] successfully verified cached root
DEBU[0001] retrying TUF client update
DEBU[0001] Loading timestamp...
DEBU[0002] 200 when retrieving metadata for timestamp
DEBU[0002] timestamp role has key IDs: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
DEBU[0002] verifying signature for key ID: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
DEBU[0002] successfully verified downloaded timestamp
DEBU[0002] Loading snapshot...
DEBU[0002] snapshot role has key IDs: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
DEBU[0002] verifying signature for key ID: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
DEBU[0002] successfully verified cached snapshot
DEBU[0002] Loading targets...
DEBU[0002] no targets in cache, must download
DEBU[0002] 200 when retrieving metadata for targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7
DEBU[0002] targets role has key IDs: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
DEBU[0002] verifying signature for key ID: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
ERRO[0002] Metadata for targets expired
DEBU[0002] downloaded targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7 is invalid: targets expired at Mon Nov 18 12:52:09 -0500 2019
DEBU[0002] Client Update (Targets): targets expired at Mon Nov 18 12:52:09 -0500 2019
/usr/bin/docker: Error: remote repository docker.io/discourse/base out-of-date: targets expired at Mon Nov 18 12:52:09 -0500 2019.
See '/usr/bin/docker run --help'.

ليس لدي أي فكرة عن سبب حدوث ذلك. قمت بفحص سجل Git وعدت إلى صورة الأساس المستخدمة سابقًا للتحقق مما إذا كانت تعمل. كانت النتيجة نفسها.

انظر: Bump base image · discourse/discourse_docker@1b3dd3a · GitHub

أي مساعدة ستكون موضع ترحيب :slight_smile:

تحديث #1

لقد أنشأت منشورًا في منتدى Docker لمناقشة هذه المشكلة كما اقترح @Falco.

هل يمكنك تحديث Docker إلى أحدث إصدار متاح لنظام التشغيل الخاص بك والمحاولة مرة أخرى؟

شكرًا لك على ردك @Falco.

أنا أستخدم أحدث إصدار من Docker:

Docker version 19.03.5, build 633a0ea838

انظر: Docker Engine version 29 release notes | Docker Docs

آسف على عدم ذكر ذلك من قبل :roll_eyes:

إذن هل فشل الأمر البسيط التالي؟

docker pull discourse/base:2.0.20191219-2109

؟

نعم. تفشل هذه الأوامر بنفس الطريقة الموصوفة في مشاركتي الأولى:

ERRO[0001] Metadata for targets expired
ERRO[0002] Metadata for targets expired
Error: remote repository docker.io/discourse/base out-of-date: targets expired at Mon Nov 18 12:52:09 -0500 2019

هذا أمر غريب جدًا. هل ساعة الخادم لديك مضبوطة بشكل صحيح؟ هل لديك أي مشاكل غريبة في التخزين المؤقت أو الجدار الناري أو شيء مشابه؟

@Falco يبدو أن ساعتي متزامنة:

$ timedatectl status

                      Local time: جم 2019-12-27 19:57:48 CET
                  Universal time: جم 2019-12-27 18:57:48 UTC
                        RTC time: جم 2019-12-27 18:57:49
                       Time zone: Europe/Berlin (CET, +0100)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

أنا أستخدم Ubuntu 18.04 LTS.

أود أيضًا أن أذكر أن الحاويات الأخرى تعمل بشكل جيد. لذا يبدو أن المشكلة مرتبطة بطريقة ما بصورة Discourse.

حسنًا، يمكنني تشغيل الأمر docker pull discourse/base:2.0.20191219-2109 دون مشاكل عبر أنظمة تشغيل متعددة ومزودي سحابة مختلفين في قارات مختلفة، لذا أعتقد أن المشكلة خاصة بجهازك المحلي أو تثبيت Docker لديك.

بما أن هذه المشكلة تتعلق بخدمة docker، يُنصح بطلب المساعدة في https://forums.docker.com/

سأقوم بذلك @Falco. شكرًا لك على مساعدتك حتى الآن :slight_smile:

@Falco لقد أنشأت منشوراً في منتديات Docker وحصلت على رد.

المشكلة مرتبطة بـ DOCKER_CONTENT_TRUST=1.

لمحاكاة هذه المشكلة، يمكنك تشغيل الأوامر التالية:

$ export DOCKER_CONTENT_TRUST=1
$ docker pull discourse/base:2.0.20191219-2109

أهلاً، أفهم الآن. لماذا قمت بتعيين هذا العلم على جهازك المحلي؟ فهو لا يُفعّل افتراضياً في نظام أوبونتو.

أقوم بإعداد خادم على الإنترنت. هذا ليس على جهاز محلي. من المفترض أن يكون الخادم “مُحصّناً”، ولهذا السبب تم تمكين هذا الخيار.

كما أنه لا يتم تمكينه افتراضيًا في Ubuntu Server.

هذا صحيح يا @Falco. لقد قمت بتفعيله. حسب ما أستطيع ملاحظته، فإن صور Discourse إما غير موقعة بشكل صحيح أو غير موقعة على الإطلاق (أقوم حاليًا بالتحقيق في الأمر).

في كلتا الحالتين، سيكون من المرغوب فيه وجود صور أو وسوم موقعة. يمكنني تخيل أنني لست الشخص الوحيد الذي يستخدم DCT.

وهو جزء من أدوات التدقيق مثل Docker Bench Security (انظر أدناه):

4.5  - تأكد من تفعيل موثوقية المحتوى في Docker

لكن حاليًا يمكنني تعطيله، ولكن سيكون رائعًا الحصول على صورة أو وسم موقّع لصور Discourse أيضًا :slight_smile:

هل يجب أن أقوم بإنشاء طلب ميزة حتى نتمكن من إغلاق هذه المشكلة؟

لحظة، أنت تتجاوز التعليمات الخاصة بالتثبيت الموصى به، لذا سيتم تصنيف هذا الإجراء على أنه غير مدعوم حتى لا يقع الآخرون في نفس الخطأ.