خطأ تداخل التجمع في Docker ليس مشكلة في مسار VPN
يحدث أحد الخطأين أثناء التخصيص، والآخر بعد تغيّر المسار. اقرأ الشبكات الفرعية لـ IPAM قبل المساس بعناوين الحاويات أو النفق.
يرفض Docker إنشاء شبكة برسالة تفيد بأن التجمع يتداخل مع تجمع آخر في مساحة العناوين هذه، فيقرر أحدهم أن مسار VPN لا بد أن يكون السبب. لا يمكن أن يكون كذلك. يُنتَج ذلك الخطأ أثناء تخصيص التجمع، قبل وجود أي حزمة، وليس لمسار نواة يدوي أي تأثير عليه. أما VPN فيهمّ في خطوة لاحقة، حين تتوقف حاوية تملك عنوانًا بالفعل عن أن تكون قابلة للوصول بعد ظهور مسار. مشكلتان، ومجموعتان من الأدلة، وخلط بينهما ينتج تغييرًا لا يصلح أيًّا منهما.
خطآن متشابهان
خطأ التخصيص حسابي. يقارن Docker الشبكة الفرعية التي طلبتها بالشبكات الفرعية التي يديرها بالفعل، ويجد تقاطعًا، فيرفض. لا شيء يعمل بعد، فلا مسار ولا حاوية ولا حركة يمكن فحصها.
العَرَض أثناء التشغيل مسألة وصول. حاوية كانت تستجيب أمس لا تستجيب الآن، وقد تغير شيء في جدول التوجيه على المضيف. الحاوية ما زالت تحتفظ بعنوانها؛ السؤال هو أي مسار يسلكه ذلك العنوان.
كلتاهما مشكلتا خطة عناوين. واحدة فقط منهما مشكلة في Docker.
اقرأ التجمعات المخصصة أولًا
اسرد الشبكات وافحص تلك التي قد تتقاطع. تقيم الشبكة الفرعية في تهيئة IPAM، وتُسرد الحاويات المرتبطة بشكل منفصل:
docker network ls
docker network inspect EXISTING_NETWORK
قارن تلك الشبكة الفرعية بالتجمع الذي تطلبه الشبكة الجديدة، وتذكّر أن Compose ينشئ شبكته الافتراضية الخاصة بكل مشروع. التعارض مع مشروع نسيته يبدو تمامًا كالتعارض مع الخدمة.
عنوان ipv4_address الثابت على خدمة هو عنوان حاوية واحدة، لا تعريف التجمع. تغييره لا يزيل التداخل، لأن التداخل بين الشبكات الفرعية لا بين الحاويات. ويشترط مرجع إنشاء الشبكة في Docker شبكات فرعية غير متداخلة للتخصيص العادي عبر الجسر، ويوثّق كيفية اختيار واحدة صراحةً.
اختر بادئة تصمد أمام VPN
يُحسم التعارض الفوري والمسار المستقبلي بالخيار نفسه، فاتخذه مرة واحدة. قارن النطاق المرشح بالشبكة المحلية، وبكل وجهة VPN يمكن للمضيف الوصول إليها، وبأي طبقة تراكب أخرى قيد الاستخدام.
بادئة ترضي Docker وتتصادم مع الشبكة البعيدة تمنحك حاوية تبدأ بنظافة وتصبح غير قابلة للوصول لحظة إنشاء النفق. ذلك هو الخطأ الثاني في هذا المقال، وتشخيصه لاحقًا أصعب بكثير من تجنّبه الآن.
دوّن النطاقات المختارة في مكان يستطيع المشروع التالي قراءته. سجل من سطر واحد للبادئات المخصصة أرخص من أسبوع من المهلات غير المفسرة.
تقاعد الشبكة أو غيّرها عمدًا
لشبكة Compose جديدة، عيّن البادئة غير المستخدمة في تهيئة IPAM الخاصة بالشبكة. لمشروع قائم، خطط لإعادة الترقيم: العناوين الثابتة والخدمات التابعة وخطوة إعادة إنشاء الشبكة كلها يجب أن تُحسب، لأن تحرير YAML لا يعيد ترقيم شبكة قيد التشغيل.
إذا كانت شبكة قديمة تملك التخصيص المتعارض، افحص من هو مرتبط بها قبل إزالتها. يرفض docker network rm ما دامت هناك نقاط نهاية نشطة، ويأخذ docker stop أسماء الحاويات أو معرّفاتها لا اسم شبكة. كما أن إيقاف حاوية لا يزيل تعريف الشبكة الذي يحمل التجمع.
التقليم الواسع ليس أداة تشخيص. فهو يطال مشاريع غير ذات صلة ويدمّر الأدلة التي كنت على وشك جمعها.
التجمعات الافتراضية لا تفيد إلا التخصيص التالي
يحسّن إعداد تجمع العناوين الافتراضي في الخدمة عمليات التخصيص التلقائي المستقبلية بإبقائها خارج النطاقات التي تحجزها. وهو لا يعيد ترقيم الشبكات القائمة بأثر رجعي، ولا يحل شبكة فرعية صريحة تتداخل مع شبكة فرعية صريحة أخرى.
عامل ذلك الإعداد كتغيير منفصل مخطط له بإعادة تشغيل خاصة به، لا كجزء من إصلاح مشروع واحد. خلط الاثنين يعني أن إعادة تشغيل الخدمة تقع في منتصف تحقيق غير ذي صلة. جدولها في نافذتها الخاصة. ثم تأكد من أن تخصيصًا تلقائيًا واحدًا جديدًا يقع فعلًا خارج النطاقات التي حجزتها.
حالما ينجح الإنشاء، تحقق من الشبكة الفرعية العاملة فعليًا، ثم نفّذ طلب تطبيق حقيقي واحد وVPN في حالته المقصودة. إذا كان التجمع صالحًا وما زال الوصول يفشل، فالعمل المتبقي هو اختيار المسار والتصفية ومسار العودة. ذلك تحقيق في وقت التشغيل، ولا يجعل خطأ التخصيص بلا معنى بأثر رجعي.
ترتيب العمل: اقرأ التجمعات المخصصة، واختر بادئة تتجاوز Docker ووجهات VPN معًا، وأعد إنشاء الشبكة عمدًا، ثم اختبر طلبًا واحدًا والنفق مرفوع.