ما هو برنامج دوكر Docker، وكيف يستخدمه مطوري البرمجيات؟

ما هو برنامج دوكر Docker، وكيف يستخدمه مطوري البرمجيات؟

شارك هذا المقال:



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

كيف يعمل تطبيق دوكر؟

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

إذا ما هو الحل؟

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

إذا كيف يمكن أن يكون Docker حلاً فعالاً ومربحا من حيث التكلفة لهذه المشكلة؟

 

لفهم هذا نحتاج إلى لتوضيح  كيفية عمل Docker بالضبط:

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

وفي السيناريو السابق سيعمل دوكر كالأتي:

  • عادةً ما يُشار إلى الجهاز الذي تم تثبيت Docker عليه وتشغيله باسم Docker Host أو Host بعبارات بسيطة.

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

  • لا تحتوي حاوية دوكر على أي نظام تشغيل مثبت ويعمل عليها. ولكن سيكون لها نسخة افتراضية من جدول العملية وواجهة (واجهات) الشبكة ونقطة (نقاط) تحميل نظام الملفات، قد تم توريثها من نظام تشغيل المضيف الذي يتم استضافة الحاوية عليه وتشغيلها.

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

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

مميزات استخدام دوكر:

  • يدعم Docker تطبيقات متعددة بمتطلبات وتبعيات تطبيق مختلفة ، ليتم استضافتها معًا على نفس المضيف ، طالما أن لديهم نفس متطلبات نظام التشغيل.

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

  • الكفاءة العالية والسرعة وذلك لأن الحاوية ليس لديها نظام تشغيل مثبت عليها. وبالتالي فإنه يستهلك ذاكرة قليلة جدًا مقارنةً بالجهاز الظاهري (الذي سيكون مثبتًا عليه نظام تشغيل كامل ويعمل عليه)، ويؤدي هذا أيضًا إلى تقليل وقت التمهيد إلى بضع ثوانٍ فقط ، مقارنةً ببضع دقائق مطلوبة لتشغيل جهاز افتراضي.

  • يقلل التكاليف حيث أن نظام Docker يكون أقل تطلبًا عندما يتعلق الأمر بالأجهزة المطلوبة لتشغيله.

عيوب استخدام دوكر Docker

  • لا يمكن استضافة التطبيقات ذات متطلبات نظام التشغيل المختلفة معًا على نفس Docker Host. فعلى سبيل المثال  لنفترض أن لدينا 4 تطبيقات مختلفة ، من بينها 3 تطبيقات تتطلب نظام تشغيل قائم على Linux ويتطلب التطبيق الآخر نظام تشغيل قائم على Windows. في مثل هذا السيناريو يمكن استضافة التطبيقات الثلاثة التي تتطلب نظام تشغيل يستند إلى Linux على Docker Host واحد ، بينما يجب استضافة التطبيق الذي يتطلب نظام تشغيل يستند إلى Windows على Docker Host مختلف.

المكونات الأساسية لنظام دوكر Docker

يعد Docker Engine أحد المكونات الأساسية لـ Docker. وهو مسؤول عن الأداء العام لمنصة Docker، و هو تطبيق يعتمد على خادم العميل ويتكون من 3 مكونات رئيسية:

  • الخادم (server)

  • REST API

  •  (client)

  • ويدير الخادم برنامجًا خفيًا يُعرف باسم (Dockerd) (Docker Daemon) ، مسؤول عن إنشاء وإدارة صور Docker والحاويات والشبكات والمجلدات على منصة Docker.

  • يتم تحديد واجهة برمجة تطبيقات REST كيفية تفاعل التطبيقات مع الخادم ، وتوجيهها لإنجاز مهمتها.

  • Client هنا ليس سوى واجهة سطر أوامر تسمح للمستخدمين بالتفاعل مع Docker باستخدام الأوامر.

ما هو Docker Hub؟

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

إصدارات Docker المتوفرة:

يتوفر Docker في إصدارين مختلفين:

Community Edition (CE)

Enterprise Edition (EE)

  • إصدار CE مناسب للمطورين الفرديين والمشاريع الصغيرة. حيث يوفر وظائف محدودة مقارنة بإصدار Enterprise.

  • الإصدار Enterprise Edition  مناسب للشركات الكبيرة واستخدام Docker في بيئات الإنتاج.

  • ويتم تصنيف Enterprise Edition أيضًا إلى ثلاث إصدارات مختلفة ، كما هو موضح أدناه:

النسخة الأساسية

الإصدار القياسي

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

كيف تقوم بتثبيت Docker؟

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

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



ما رأيك في هذا المقال؟

كيف تقييم نوعية المحتوى في نقرة؟

5 4 3 2 1