كيفية إعداد شبكة Docker مخصصة لخلفيات الوكيل العكسي

إيفا وونغ هي كاتبة تقنية و ومهندسة هاوية في ZimaSpace. مهووسة بالتكنولوجيا مدى الحياة ولديها شغف بالمختبرات المنزلية والبرمجيات مفتوحة المصدر، تتخصص في تبسيط المفاهيم التقنية المعقدة إلى أدلة عملية وسهلة الفهم. تؤمن إيفا بأن الاستضافة الذاتية يجب أن تكون ممتعة وليست مخيفة. من خلال دروسها، تمكّن المجتمع من تبسيط إعدادات الأجهزة، بدءًا من بناء أول نظام تخزين شبكي NAS وحتى إتقان حاويات Docker.

اربط الوكيل العكسي وكل واجهة خلفية HTTP بشبكة واحدة مشتركة يحددها المستخدم؛ وأبقِ قواعد البيانات على شبكات التطبيقات الخاصة.

لا حاجة إلى نشر منفذ كل واجهة خلفية على مضيف NAS عندما يستطيع الوكيل حل أسماء خدمات Compose على جسر يحدده المستخدم. يتيح نمط الشبكتين للوكيل مسارًا مضبوطًا إلى واجهات الويب الخلفية، بينما تظل قواعد البيانات متاحة لتطبيقاتها فقط. حدّد ملكية الشبكات، وتجنب الأسماء المستعارة الملتبسة، وقرّر الخدمات التي تحتاج إلى وصول صادر، وتحقق من بقاء منافذ المضيف مغلقة.

ارسم مصفوفة قابلية الوصول المقصودة

أدرج كل اتصال: العميل بالوكيل، والوكيل بالواجهة الخلفية، والواجهة الخلفية بقاعدة البيانات، والواجهة الخلفية بواجهات برمجة التطبيقات الخارجية، والمسؤول بنقاط نهاية الصيانة. حدّد البروتوكول والمنفذ واسم DNS وما إذا كان المسار يعبر المضيف.

عادةً ينبغي للوكيل العكسي وحده نشر المنفذين 80 و443. تكشف الواجهات الخلفية منفذ تطبيقاتها لشبكة Docker من دون تعيين ports للمضيف. تنضم قواعد البيانات إلى شبكة التطبيق الخاصة فقط، ما لم يكن مسار إدارة صريح مطلوبًا.

اختر أسماء خدمات أو أسماء مستعارة للشبكة ثابتة وفريدة. يحل Docker DNS أسماء الخدمات على الشبكات المشتركة التي يحددها المستخدم، لكن الأسماء المستعارة العامة مثل web قد تتعارض عندما تنضم مشاريع Compose متعددة إلى شبكة الوكيل نفسها.

أنشئ شبكة وكيل مشتركة وشبكة تطبيق خاصة

أنشئ شبكة الوكيل مرة واحدة، وعلّمها بأنها خارجية في كل مشروع تطبيق، وأرفق الوكيل والواجهة الخلفية المقصودة بها. يحافظ ذلك على ثبات هوية الشبكة عند إعادة إنشاء مشروع Compose منفرد.

حدّد شبكة خاصة افتراضية أو مسماة منفصلة لكل تطبيق، وأرفق بها الواجهة الخلفية وقاعدة البيانات. تصبح الواجهة الخلفية جسرًا مضبوطًا بين حركة مرور الوكيل والحالة الخاصة؛ ولا ينبغي للوكيل الانضمام إلى شبكة قاعدة البيانات.

يوثّق مرجع تعريفات شبكات Compose الشبكات الخارجية وإرفاق الخدمات في Compose. تعامل مع الشبكة الخارجية على أن دورة حياتها مملوكة خارج حزمة التطبيق: يجب أن يتحقق النشر من وجودها بدل افتراض أن Compose سينشئها أو يحذفها.

networks:
  proxy:
    external: true
  app-private:
    internal: true
services:
  web:
    networks: [proxy, app-private]
  db:
    networks: [app-private]

أزل منافذ المضيف غير الضرورية وراجع الوصول الصادر

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

استخدم internal: true فقط للشبكات التي لا تحتاج أعضاؤها فعلًا إلى مسار خارجي. قد تفشل الواجهات الخلفية التي تستدعي موفري الهوية أو خطافات الويب أو خدمات الحزم أو واجهات برمجة التطبيقات البعيدة على شبكة داخلية فقط. استخدم شبكة ثانية قادرة على الوصول الصادر عندما يتطلب تصميم التطبيق ذلك.

احمِ مقبس Docker المستخدم للاكتشاف التلقائي للوكيل. يقلل ربط المقبس للقراءة فقط من عمليات الكتابة العرضية، لكنه لا يجعل المقبس غير ضار؛ ويوفر وكيل مقبس مقيّد أو إعداد ثابت سطح تحكم أضيق.

-15% OFF

تحقق من DNS للخدمات وكشف المنافذ والعزل

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

افحص مضيف NAS من جهاز آخر على الشبكة المحلية، وتأكد من أن منافذ الوكيل فقط مفتوحة. ثم اختبر TLS، والرؤوس المُمرَّرة، وترقيات WebSocket، والتحميلات الكبيرة، وعمليات إعادة توجيه التطبيق عبر اسم المضيف العام. ينبغي أن تسجل خريطة خدمات الخادم المنزلي شبكة الوكيل باعتبارها جزءًا من خريطة خدمات الخادم المنزلي.

استعد تعيين المنفذ السابق للتشخيص فقط، وليس كتبعية مخفية دائمة. توقّف إذا احتاج الوكيل إلى وصول مباشر إلى قاعدة البيانات، أو وجّهت الأسماء المستعارة إلى المشروع الخطأ، أو أدى حذف منفذ المضيف إلى تعطيل تكامل غير موثق.

الأسئلة الشائعة 

هل تكون شبكة Docker الخارجية أكثر أمانًا تلقائيًا؟

لا. يصف مصطلح «خارجية» ملكية دورة الحياة، وليس الأمان. يمكن لكل حاوية مرفقة عمومًا الاتصال وفقًا لسلوك مشغّل الشبكة والجدار الناري للمضيف.

هل ينبغي للخدمات الخلفية الاستمرار في تعريف expose؟

هو اختياري للاتصال على شبكة يحددها المستخدم، لكنه قد يوثق منفذ الحاوية المقصود. ولا ينشر المنفذ على المضيف.

هل يمكن تعليم شبكة الوكيل بأنها داخلية؟

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

لماذا تُستخدم أسماء الخدمات بدلًا من عناوين IP للحاويات؟

قد تتغير عناوين الحاويات بعد إعادة إنشائها. يوفر اكتشاف خدمات Docker اسمًا ثابتًا داخل الشبكة المشتركة، ما يجعل إعداد الوكيل أكثر استدامة.

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

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.