فهم عامل ميناء

لقد كنت أستخدم عامل الإرساء لعدة أشهر حتى الآن لهيكلة تطوير / تسليم مشاريع الويب. أقدم لقراء "هابراهبر" ترجمة للمقال التمهيدي عن عامل الرصيف - فهم عامل الميناء.

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

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

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

يمكن أن تكون منصة وأدوات المحاكاة الافتراضية للحاوية مفيدة في الحالات التالية:

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

ما الذي يمكنني استخدام عامل الإرساء من أجله؟

الافراج السريع عن التطبيقات الخاصة بك

يعتبر Docker رائعًا لتنظيم دورة التطوير. يسمح Docker للمطورين باستخدام الحاويات المحلية مع التطبيقات والخدمات. مما يسمح لك لاحقًا بالتكامل مع عملية سير عمل النشر والتكامل المستمر.

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

أسهل في التخطيط والتكشف

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

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

حمولات عالية والمزيد من الحمولات

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

المكونات الرئيسية ل Docker

يتكون Docker من مكونين رئيسيين:

  • Docker: منصة افتراضية مفتوحة المصدر ؛
  • Docker Hub: منصتنا كخدمة لتوزيع وإدارة حاويات الرصيف.

ملحوظة! يتم توزيع Docker بموجب ترخيص Apache 2.0.

العمارة عامل الميناء

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

فهم عامل ميناء

Docker daemon

كما هو موضح في الرسم التخطيطي ، يعمل البرنامج الخفي على الجهاز المضيف. لا يتفاعل المستخدم مباشرة مع الخادم ، ولكنه يستخدم العميل لهذا الغرض.

عميل عامل ميناء

عميل Docker ، برنامج docker هو الواجهة الرئيسية لـ Docker. يتلقى أوامر من المستخدم ويتفاعل مع docker daemon.

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

لفهم ماهية عامل الإرساء ، عليك معرفة ثلاثة مكونات:

  • الصور
  • سجل (السجلات)
  • حاويات

الصور

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

تسجيل

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

حاويات

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

إذن كيف يعمل Docker؟

طالما أننا نعلم أن:

  • يمكننا إنشاء صور توجد بها تطبيقاتنا ؛
  • يمكننا إنشاء حاويات من الصور لتشغيل التطبيقات ؛
  • يمكننا توزيع الصور من خلال Docker Hub أو أي سجل صور آخر.

دعونا نرى كيف تتوافق هذه المكونات معًا.

كيف تعمل الصورة؟

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

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

في قلب كل صورة توجد صورة أساسية. على سبيل المثال ، ubuntu ، الصورة الأساسية لـ Ubuntu ، أو fedora ، الصورة الأساسية لتوزيع Fedora. يمكنك أيضًا استخدام الصور كأساس لإنشاء صور جديدة. على سبيل المثال ، إذا كانت لديك صورة أباتشي ، فيمكنك استخدامها كصورة أساسية لتطبيقات الويب الخاصة بك.

ملحوظة! عادةً ما يسحب Docker الصور من سجل Docker Hub.

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

  • الأمر Run
  • إضافة ملف أو دليل
  • خلق متغير البيئة
  • تحديد ما يجب تشغيله عند تشغيل حاوية هذه الصورة

يتم تخزين هذه التعليمات في ملف Dockerfile. يقرأ عامل ميناء هذا Dockerfile، عند إنشاء الصورة ، ينفذ هذه التعليمات ، ويعيد الصورة النهائية.

كيف يعمل Docker Registry؟

السجل هو مستودع لصور عامل ميناء. بمجرد إنشاء الصورة ، يمكنك نشرها في سجل Docker Hub العام أو في السجل الخاص بك.

باستخدام عميل docker ، يمكنك البحث عن الصور المنشورة بالفعل وتنزيلها على جهاز Docker لإنشاء حاويات.

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

كيف تعمل الحاوية؟

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

ماذا يحدث عندما تبدأ الحاوية؟

أو باستخدام البرنامج docker، أو باستخدام RESTful API ، يخبر عميل عامل الإرساء برنامج Docker daemon ببدء الحاوية.

$ sudo docker run -i -t ubuntu /bin/bash

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

  • الصورة المراد استخدامها لإنشاء الحاوية. في حالتنا هذه ubuntu
  • الأمر الذي تريد تشغيله عند بدء تشغيل الحاوية. في حالتنا هذه /bin/bash

ماذا يحدث تحت الغطاء عندما نقوم بتشغيل هذا الأمر؟

يقوم Docker ، بالترتيب ، بما يلي:

  • تنزيل صورة ubuntu: يتحقق عامل التحميل من صورة ubuntu على الجهاز المحلي ، وإذا لم يكن موجودًا ، فسيتم تنزيله من دوكر هاب. إذا كانت هناك صورة ، فإنها تستخدمها لإنشاء حاوية ؛
  • يُنشئ حاوية: عند استلام الصورة ، يستخدمها عامل التحميل لإنشاء الحاوية ؛
  • يهيئ نظام الملفات ويحمل مستوى القراءة فقط: يتم إنشاء الحاوية في نظام الملفات ويتم إضافة مستوى القراءة فقط إلى الصورة ؛
  • تهيئة الشبكة / الجسر: يُنشئ واجهة شبكة تسمح لعامل الإرساء بالاتصال بالجهاز المضيف ؛
  • تعيين عنوان IP: يجد ويضع العنوان ؛
  • تبدأ العملية المحددة: يطلق التطبيق الخاص بك ؛
  • عمليات ويصدر مخرجات التطبيق الخاص بك: يتصل ويسجل الإدخال القياسي والإخراج وتدفق الأخطاء للتطبيق الخاص بك حتى تتمكن من مراقبة كيفية أداء التطبيق الخاص بك.

لديك الآن حاوية صالحة للعمل. يمكنك إدارة الحاوية الخاصة بك ، والتفاعل مع التطبيق الخاص بك. عندما تقرر إيقاف التطبيق ، قم بإزالة الحاوية.

التقنيات المستخدمة

Docker مكتوب بلغة Go ويستخدم بعض ميزات Linux kernel لتنفيذ الوظائف المذكورة أعلاه.

Namespace (مساحات الأسماء)

يستخدم Docker التكنولوجيا namespaces لتنظيم مساحات العمل المعزولة ، والتي نسميها الحاويات. عندما نبدأ حاوية ، ينشئ عامل الإرساء مجموعة من مساحات الأسماء لتلك الحاوية.

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

قائمة ببعض مساحات الأسماء التي يستخدمها عامل التحميل:

  • معرف المنتج: لعزل العملية ؛
  • شبكة: لإدارة واجهات الشبكة ؛
  • التصنيف الدولي للبراءات: لإدارة موارد IPC. (برنامج المقارنات الدولية: InterProcess Communication) ؛
  • منت: لإدارة نقاط التثبيت ؛
  • التوقيت العالمي: لعزل kernel والتحكم في إنشاء الإصدار (UTC: نظام Unix لمشاركة الوقت).

مجموعات التحكم (مجموعات التحكم)

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

نظام ملفات الاتحاد

Union File Sysem أو UnionFS هو نظام ملفات يعمل عن طريق إنشاء المستويات ، مما يجعله خفيفًا وسريعًا للغاية. يستخدم Docker UnionFS لإنشاء الكتل التي تُبنى منها الحاوية. يمكن لـ Docker استخدام العديد من نكهات UnionFS بما في ذلك: AUFS و btrfs و vfs و DeviceMapper.

تنسيقات الحاويات

يجمع Docker بين هذه المكونات في غلاف نسميه تنسيق الحاوية. التنسيق الافتراضي يسمى libcontainer. يدعم Docker أيضًا تنسيق حاوية Linux التقليدي بتنسيق ال إكس سي. قد يدعم Docker تنسيقات حاوية أخرى في المستقبل. على سبيل المثال ، التكامل مع BSD Jails أو Solaris Zones.

المصدر: www.habr.com

إضافة تعليق