Docker Networking - اكتشف كيف تتواصل الحاويات مع بعضها البعض



تعلم كل شيء عن إمكانيات شبكة Docker مع فهم نموذج شبكة الحاويات وتنفيذه من خلال التدريب العملي.

في عالم اليوم ، أصبحت المؤسسات حريصة على النقل بالحاويات الذي يتطلب مهارات شبكات قوية لتكوين بنية الحاوية بشكل صحيح ، وبالتالي ، يقدم هذا مفهوم Docker Networking.

كيفية التحويل البرمجي في جافا

في هذه المدونة على Docker Networking ، ستتصفح الموضوعات التالية:





ما هو عامل الميناء؟

لفهم Docker ، تحتاج إلى معرفة تاريخ كيفية نشر التطبيقات من قبل ، ثم كيفية نشر التطبيقات باستخدام الحاويات الآن.

نشر التطبيقات بالطريقة القديمة والطريقة الجديدة - شبكات Docker - Edureka



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

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

إذن ، كيف تتواصل هذه الحاويات مع بعضها البعض في مواقف مختلفة؟



حسنًا ، يأتي ذلك من خلال Docker Networking.

شبكات Docker

قبل أن أتعمق في Docker Networking ، اسمحوا لي أن أوضح لك سير عمل Docker.

كما ترى في الرسم البياني أعلاه. يكتب المطور رمزًا ينص على متطلبات التطبيق أو التبعيات في وسيلة سهلة لكتابة Docker File ويقوم ملف Docker بإنتاج صور Docker. لذلك ، مهما كانت التبعيات المطلوبة لتطبيق معين موجودة في هذه الصورة.

الآن ، حاويات Docker ليست سوى مثيل وقت تشغيل Docker Image. يتم تحميل هذه الصور على Docker Hub (مستودع Git لصور Docker) الذي يحتوي على مستودعات عامة / خاصة.

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

لذلك ، يمكنك تعريف Docker Networking على أنه ممر اتصال تتواصل من خلاله جميع الحاويات المعزولة مع بعضها البعض في مواقف مختلفة لتنفيذ الإجراءات المطلوبة.

ما رأيك في أهداف Docker Networking؟

أهداف Docker Networking

المرونة - يوفر Docker المرونة من خلال تمكين أي عدد من التطبيقات على منصات مختلفة للتواصل مع بعضها البعض.

عبر منصة - يمكن استخدام Docker بسهولة في الأنظمة الأساسية المشتركة التي تعمل عبر خوادم مختلفة بمساعدة Docker Swarm Clusters.

قابلية التوسع - Docker عبارة عن شبكة موزعة بالكامل ، والتي تمكن التطبيقات من النمو والتوسع بشكل فردي مع ضمان الأداء.

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

سهل الاستخدام - يجعل Docker من السهل أتمتة نشر الخدمات ، مما يجعلها سهلة الاستخدام في الحياة اليومية.

الدعم - يوفر Docker دعمًا خارج الصندوق. لذا ، فإن القدرة على استخدام Docker Enterprise Edition والحصول على جميع الوظائف سهلة للغاية ومباشرة ، مما يجعل من السهل جدًا استخدام منصة Docker.

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

هل تريد استكشاف مراحل DevOps المختلفة؟

نموذج شبكة الحاويات (CNM)

قبل أن أخبرك ما هو بالضبط نموذج شبكة الحاويات ، دعني أطلعك على Libnetwork المطلوب قبل أن تفهم CNM.

Libnetwork هي مكتبة Docker مفتوحة المصدر تقوم بتنفيذ جميع المفاهيم الأساسية التي تتكون منها CNM.

وبالتالي، نموذج شبكة الحاويات (CNM) توحيد الخطوات المطلوبة لتوفير الشبكات للحاويات باستخدام برامج تشغيل شبكة متعددة. يتطلب CNM مخزنًا ذا قيمة مفتاح موزعة مثل وحدة التحكم لتخزين تكوين الشبكة.

يحتوي CNM على واجهات لمكونات IPAM الإضافية ومكونات الشبكة.

تُستخدم واجهات برمجة تطبيقات البرنامج المساعد لـ IPAM لإنشاء / حذف تجمعات العناوين وتخصيص / إلغاء تخصيص عناوين IP للحاويات ، بينما تُستخدم واجهات برمجة تطبيقات البرنامج المساعد للشبكة لإنشاء / حذف الشبكات وإضافة / إزالة الحاويات من الشبكات.

تم بناء CNM بشكل أساسي على 5 كائنات: وحدة تحكم الشبكة ، والمشغل ، والشبكة ، ونقطة النهاية ، وصندوق الحماية.

كائنات نموذج شبكة الحاويات

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

سائق: يمتلك الشبكة وهو مسؤول عن إدارة الشبكة من خلال مشاركة العديد من السائقين لتلبية حالات الاستخدام وسيناريوهات النشر المختلفة.

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

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

صندوق الرمل: يتم إنشاؤه عندما يطلب المستخدمون إنشاء نقطة نهاية على شبكة. يمكن أن يحتوي Sandbox على عدة نقاط نهاية متصلة بشبكات مختلفة تمثل تكوين شبكة الحاوية مثل عنوان IP وعنوان MAC والمسارات و DNS.

لذلك ، كانت تلك هي الأشياء الخمسة الرئيسية لـ CNM.

الآن ، دعني أخبرك بمختلف برامج تشغيل الشبكة المشاركة في شبكات Docker.

هل ترغب في الارتقاء بتعلم DevOps إلى مستوى أعلى؟

برامج تشغيل الشبكة

هناك 5 برامج تشغيل للشبكات بشكل أساسي: Bridge ، Host ، None ، Overlay ، Macvlan

جسر: شبكة الجسر هي شبكة داخلية افتراضية خاصة تم إنشاؤها بواسطة عامل إرساء على المضيف. لذلك ، تحصل جميع الحاويات على عنوان IP داخلي ويمكن لهذه الحاويات الوصول إلى بعضها البعض باستخدام عنوان IP الداخلي هذا. تُستخدم شبكات Bridge عادةً عند تشغيل تطبيقاتك في حاويات مستقلة تحتاج إلى الاتصال.

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

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

تراكب : يُنشئ شبكة داخلية خاصة تمتد عبر جميع العقد المشاركة في حشد السرب. لذلك ، تسهل شبكات التراكب الاتصال بين خدمة سرب وحاوية قائمة بذاتها ، أو بين حاويتين مستقلتين على Docker Daemons مختلفة.

ماكفلان: يسمح لك بتعيين عنوان MAC لحاوية ، مما يجعلها تظهر كجهاز مادي على شبكتك. بعد ذلك ، يوجه Docker daemon حركة المرور إلى الحاويات عن طريق عناوين MAC الخاصة بهم. يعد برنامج تشغيل Macvlan هو الخيار الأفضل عندما يُتوقع منك الاتصال مباشرة بالشبكة الفعلية ، بدلاً من توجيهك عبر مكدس شبكة مضيف Docker.

حسنًا ، كانت هذه كل النظرية المطلوبة لفهم Docker Networking. الآن ، دعني أمضي قدمًا وأريك عمليًا كيف يتم إنشاء الشبكات وتواصل الحاويات مع بعضها البعض.

تشابك الايدى

لذا ، مع افتراض أن جميعكم قد قاموا بتثبيت Docker على أنظمتكم ، لدي سيناريو لعرضه.

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

ماذا عن تنفيذ المثال المذكور أعلاه عمليا.

الخطوات المتبعة:

  • قم بتهيئة Docker Swarm لتشكيل مجموعة Swarm.
  • قم بإنشاء شبكة تراكب
  • إنشاء خدمات لكل من تطبيق الويب و MySQL
  • ربط التطبيقات من خلال الشبكة

هيا بنا نبدأ!

الخطوة 1: قم بتهيئة Docker Swarm على الجهاز.

بدء سرب عامل ميناء --advertise-addr 192.168.56.101

تقوم علامة –advertise-addr بتكوين عقدة المدير لنشر عنوانها كـ 192.168.56.101. يجب أن تكون العقد الأخرى في السرب قادرة على الوصول إلى المدير على عنوان IP.

الخطوة 2: الآن ، إذا كنت ترغب في الانضمام إلى عقدة المدير هذه إلى العقدة العاملة ، فقم بنسخ الرابط الذي تحصل عليه عند تهيئة السرب على عقدة العامل.
الخطوه 3: إنشاء شبكة تراكب.

إنشاء شبكة عامل ميناء تراكب myoverlaynetwork

حيث يكون myoverlay هو اسم الشبكة و -d يمكّن Docker Daemon من العمل في الخلفية.

الخطوة 4.1: قم بإنشاء webapp1 للخدمة واستخدم الشبكة التي قمت بإنشائها لنشر هذه الخدمة عبر مجموعة السرب.

إنشاء خدمة عامل ميناء - name webapp1 -d - Network myoverlaynetwork -p 8001: 80 hshar / webapp

كيفية التصريح عن مجموعة ديناميكية في جافا

أين -pهو ميناء الشحن ،hsharهو اسم الحساب على Docker Hub ، و webapp هو اسم تطبيق الويب الموجود بالفعل على Docker Hub.

الخطوة 4.2: الآن ، تحقق مما إذا تم إنشاء الخدمة أم لا.

خدمة عامل ميناء ls

الخطوة 5.1: الآن ، أنشئ خدمة MySQL واستخدم الشبكة التي أنشأتها لنشر الخدمة عبر كتلة السرب.

خدمة عامل ميناء إنشاء - اسم mysql -d - شبكة myoverlaynetwork -p 3306: 3306 hshar / mysql: 5.5


الخطوة 5.2: الآن ، تحقق مما إذا تم إنشاء الخدمة أم لا.

خدمة عامل ميناء ls

الخطوة 6.1: بعد ذلك ، تحقق من الحاوية التي تعمل على العقدة الرئيسية وانتقل إلى حاوية hshar / webapp.

عامل ميناء ملاحظة

الخطوة 6.2: لذلك ، يمكنك أن ترى أن خدمة webapp فقط موجودة على عقدة المدير. لذا ، ادخل إلى حاوية webapp.

docker exec -it container_id bash nano var / www / html / index.php

سيسرد أمر docker ps حاويتك مع معرف الحاوية الخاص بها. الأمر الثاني سيمكن تلك الحاوية في وضع تفاعلي.

الخطوة السابعة: الآن ، قم بتغيير اسم servername $ من localhost إلى mysql و $ password من '' إلى 'edureka' ، وقم أيضًا بتغيير الكل في ملء تفاصيل قاعدة البيانات المطلوبة وحفظ ملف index.php الخاص بك باستخدام اختصار لوحة المفاتيح Ctrl + x وبعد ذلك y للحفظ ، واضغط على Enter.

الخطوة الثامنة: الآن ، انتقل إلى حاوية mysql التي تعمل على عقدة أخرى.

docker exec -it container_id bash

الخطوة 9: بمجرد دخولك داخل حاوية mysql ، أدخل الأوامر أدناه لاستخدام قاعدة البيانات في MySQL.

الخطوة 9.1: احصل على وصول لاستخدام حاوية mysql.

mysql -u الجذر -pedureka

حيث تمثل -u المستخدم و- p هي كلمة مرور جهازك.

الخطوة 9.2: قم بإنشاء قاعدة بيانات في mysql والتي سيتم استخدامها للحصول على البيانات من webapp1.

إنشاء قاعدة بيانات يدويًا

الخطوة 9.3: استخدم قاعدة البيانات التي تم إنشاؤها.

استخدم HandsOn

الخطوة 9.4: قم بإنشاء جدول في قاعدة البيانات هذه والذي سيتم استخدامه للحصول على البيانات من webapp1.

CREATE TABLE course_details (course_name VARCHAR (10)، course_id VARCHAR (11))

الخطوة 9.5: الآن ، اخرج من MySQL والحاوية أيضًا باستخدام الأمر خروج .

الخطوة 10: انتقل إلى المستعرض الخاص بك وأدخل العنوان باسم المضيف المحلي: 8001 / index.php . سيؤدي هذا إلى فتح تطبيق الويب الخاص بك. الآن ، أدخل تفاصيل الدورات وانقر فوق إرسال الاستعلام .

كيفية تجميع رموز جافا

الخطوة 11: بمجرد النقر فوق إرسال الاستعلام ، انتقل إلى العقدة التي تعمل فيها خدمة MySQL ثم انتقل إلى داخل الحاوية.

docker exec -it container_id bash mysql -u root -pedureka USE جداول عرض HandsOn حدد * من course_details

سيُظهر لك هذا ناتج جميع الدورات ، التي ملأت تفاصيلها.

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

إذا وجدت مدونة Docker Container هذه ذات صلة ، فراجع ملف من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 450.000 متعلم راضٍ منتشرين في جميع أنحاء العالم. تساعد الدورة التدريبية لشهادة Edureka DevOps المتعلمين على اكتساب الخبرة في عمليات وأدوات DevOps المختلفة مثل Puppet و Jenkins و Docker و Nagios و Ansible و GIT لأتمتة خطوات متعددة في SDLC.

هل تبحث عن شهادة في DevOps؟

حصلت على السؤال بالنسبة لي؟ يرجى ذكر ذلك في قسم التعليقات وسأعاود الاتصال بك.