مرحباً،
في الأيام الأخيرة، بدأنا فجأة في مواجهة مشكلة في إرسال رسائل البريد الإلكتروني… ثم حاولنا الترقية/التحديث دون نجاح (صفحة التحديث تعلق وكل مكون - docker، discourse، plugins - يتجمد عند “التحقق من الإصدار الجديد…”) ثم حاولنا تحديث كل شيء عبر root ولكن إعادة البناء تفشل وتعطي الرسالة التالية (من بين أشياء أخرى):
fatal: unable to access 'https://github.com/discourse/discourse.git/': Could not resolve host: github.com`
أكد مضيفنا أنه لا توجد مشاكل في اتصال الخادم، أو SSL، أو جدار الحماية، أو أي شيء آخر.
أشك في أن الأمر يتعلق بـ docker. حتى أنني تحققت من هذا الموضوع: Docker sometimes fails to connect to github.com - Installation - Discourse Meta وجربت:
# cd /var/discourse/
# ./launcher enter app
# wget -O - -v https://github.com/discourse/logster.git/ |wc
وحصلت على ما يلي:
--2025-02-28 09:45:51-- https://github.com/discourse/logster.git
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
0 0 0
أي أفكار حول كيفية معالجة هذه المشكلة؟
Ed_S
(Ed S)
28 فبراير 2025، 11:12ص
2
هل تعمل في منطقة خاصة مثل البر الرئيسي للصين؟
سأقوم بالتحقق من DNS على المضيف الخاص بك ثم التحقق من DNS في Docker الخاص بك.
التحقق من DNS على المضيف الخاص بك:
resolvectl status|egrep Servers
nslookup github.com
التحقق من DNS في Docker الخاص بك:
docker exec -it app bash -c "cat /etc/resolv.conf"
docker exec -it app bash -c "wget -O - -v https://github.com/discourse/logster.git/ |wc"
إعجاب واحد (1)
حسنًا، إذًا:
على DNS المضيف:
#resolvectl status|egrep Servers
DNS Servers: 8.8.8.8
Fallback DNS Servers: 8.8.8.8
DNS Servers: 8.8.8.8 8.8.4.4
#nslookup github.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: github.com
Address: 140.82.112.3
على Docker DNS:
#docker exec -it app bash -c "cat /etc/resolv.conf"
# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.
nameserver 8.8.8.8
nameserver 8.8.4.4
# Based on host file: '/etc/resolv.conf' (legacy)
# Overrides: [nameservers]
#docker exec -it app bash -c "wget -O - -v https://github.com/discourse/logster.git/ |wc"
--2025-02-28 12:20:17-- https://github.com/discourse/logster.git/
Resolving github.com (github.com)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ‘github.com’
0 0 0
ملاحظة: يعمل المضيف الخاص بنا في كندا.
Ed_S
(Ed S)
28 فبراير 2025، 12:44م
4
شكراً… ليس لدي فكرة عن كيفية حدوث هذا، لكنني لست خبيرًا في دوكر.
ما هو نظام التشغيل المضيف لديك، وكيف قمت بتثبيت Discourse؟ هل استخدمت حزمة موفرة من قبل شركة الاستضافة، أم هل هو تثبيت قياسي؟ (أم تثبيت مطور؟؟) كيف قمت بتثبيت Docker؟
لكن كان كل هذا يعمل من قبل، ثم توقف عن العمل، لذا ربما يكون متعلقًا بدوكر. ربما يمكنك تحديث تثبيت Docker الخاص بك؟
إعجاب واحد (1)
إنه تثبيت قياسي كان يعمل بشكل جيد للغاية حتى الآن في AlmaLinux خلال الأشهر القليلة الماضية (ومن قبل ذلك بشكل جيد أيضًا في CentOS).
كيف يمكنني تحديث تثبيت docker (بدون تعليمات إعادة البناء المعتادة باستخدام المشغل أو عبر الموقع الإلكتروني حيث يبدو أن أياً من هذه الطرق لا تعمل)؟
Ed_S
(Ed S)
28 فبراير 2025، 1:26م
6
قبل المتابعة، يرجى أخذ نسخة احتياطية (إذا استطعت) وتنزيل نسخة محلية. (ربما جرب نقل موقع Discourse إلى VPS آخر باستخدام rsync )
يرجى تجربة هذه الأوامر، فقد تعطيك تلميحًا:
docker --version
docker run hello-world
إعجاب واحد (1)
بمساعدة بسيطة من ChatGPT، اكتشفت أن المشكلة تكمن في تكوين شبكة Docker’s Bridge أو أيًا كان ما يعنيه ذلك.
لقد جربت العديد من الإصلاحات ولكن حتى الآن دون جدوى. لم أجرب هذا الحل بعد:
هل هذا آمن لبيئة الإنتاج؟ (حتى لو كان يتسبب في فترة توقف قصيرة)
Ed_S
(Ed S)
28 فبراير 2025، 9:06م
8
أخشى أنني لا أعلم. أثق بأن لديك نسخة احتياطية حديثة وآمنة. أقل شيء قد يسبب اضطراب هو إعادة التشغيل.
إعجاب واحد (1)
أنا فقط أنشر لتحديث الوضع. تم حله بمساعدة ChatGPT.
بعد تجربة حلول مختلفة، أظهر هذا الجزء أن هناك خطأ ما في الأذونات أو سياسات الأمان:
جرب تشغيل حاوية باستخدام العلامة --privileged
هذا يتجاوز بعض القيود التي قد تؤثر على الشبكات.
docker run --rm --privileged alpine ping -c 4 github.com
إذا نجح هذا، فهذا يشير إلى مشكلة في الأذونات أو سياسة الأمان.
بعد ذلك، تم تطبيق الاقتراح التالي:
تحقق من قواعد iptables مرة أخرى
نظرًا لأن Docker يعتمد على iptables، دعنا نتأكد من أنه يحتوي على قواعد التوجيه الصحيحة.
قم بتشغيل:
sudo iptables -t nat -L -v -n | grep -i docker
إذا لم تظهر أي قواعد متعلقة بـ Docker، فقم بإضافتها يدويًا:
sudo iptables -P FORWARD ACCEPT
sudo iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
ثم أعد تشغيل Docker:
sudo systemctl restart docker
واختبر مرة أخرى.
… وهو ما حل المشكلة تمامًا.
system
(system)
تم إغلاقه في
1 أبريل 2025، 9:52م
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.