عمق التقنية

ماهو الدوكر Docker ؟

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

تهدف منصة الحاويات إلى تمكين المطورين من تعبئة التطبيقات داخل الحاويات، حيث تعمل هذه الحاويات على تبسيط وتسريع تسليم التطبيقات الموزعة بشكل سلس. وقد أصبحت فكرة Docker تكتسب شعبية متزايدة بين المطورين، خاصة مع تحول العديد من المؤسسات نحو بيئات السحب المتعددة الهجينة (Hybrid Multi-Cloud) أو البيئات الأصلية للسحابة (Cloud-Native).

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

نظرة عامة على منصة Docker


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

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

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

الغرض من استخدام Docker


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

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

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

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

شعبية Docker


وفقًا للإحصائيات، يستخدم Docker Inc. الآن أكثر من 11 مليون مطور. بالإضافة إلى ذلك، يتم التعامل مع أكثر من 13 مليار تنزيل لصور الحاويات كل شهر. توفر منصة Docker إمكانية كتابة كود التطبيق محليًا بسهولة ومشاركة العمل من خلال الحاويات مع الزملاء لمساعدتهم على متابعة العمل والمضي قدمًا فيه. علاوة على ذلك، تُعد الحاويات إضافات ممتازة لعمليات التسليم المستمر (Continuous Delivery) والتكامل المستمر (Continuous Integration).

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

معمارية Docker

يعمل Docker ضمن بنية تعتمد على العميل-الخادم (Client-Server Architecture). يتواصل عميل Docker مع خادم Docker (Docker Daemon)، الذي يقوم بالمهام الشاقة مثل إنشاء الحاويات وتشغيلها وتوزيعها. يمكن تشغيل عميل وخادم Docker على نفس النظام، كما يمكن أيضًا توصيل عميل Docker بأي خادم Docker بعيد.

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

  1. خادم Docker (Docker Daemon)
    • مسؤول عن الاستماع إلى طلبات API الخاصة بـ Docker وإدارة الكائنات داخل Docker، مثل الحاويات والشبكات والأقراص والصور.
    • يمكن لخادم Docker التواصل مع خوادم Docker الأخرى لإدارة الخدمات بشكل شامل.
  2. عميل Docker (Docker Client)
    • العميل هو الوسيلة التي يتفاعل بها المستخدمون مع Docker. على سبيل المثال، عند استخدام أوامر مثل docker run، يقوم العميل بإرسال هذه الأوامر إلى الخادم “dockerd”، حيث يتم تنفيذها.
  3. سجلات Docker (Docker Registries)
    • هو مستودع لتخزين صور Docker. يحتوي على سجل عام يمكن للجميع الوصول إليه، كما يمكنك تشغيل سجل خاص بك.
    • عند استخدام أوامر مثل docker run أو docker pull، يتم سحب الصور المطلوبة من السجل المُعد مسبقًا.
  4. كائنات Docker (Docker Objects)
    • العناصر التي تُنشئها وتستخدمها عبر منصة Docker، مثل الصور (Images)، الشبكات (Networks)، الأقراص (Volumes)، الحاويات (Containers)، الإضافات (Plugins)، وغير ذلك.

الأدوات، الأوامر والمصطلحات المرتبطة بـ Docker


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

DockerFile

كل حاوية Docker على المنصة تبدأ بملف نصي بسيط يُعرف باسم DockerFile. يحتوي هذا الملف على التعليمات التي تحدد كيفية بناء صورة الحاوية داخل Docker. الغرض من DockerFile هو أتمتة عملية إنشاء الصور في Docker. يمكن اعتبار DockerFile بمثابة أوامر CLI (واجهة سطر الأوامر) التي يجب على محرك Docker تنفيذها لتجميع الصورة.

2Docker Images (صور Docker)

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

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

Docker Containers (حاويات Docker)

الحاويات docker container هي مثيلات حية وقابلة للتنفيذ من صور Docker.

  • الصور تكون للقراءة فقط (Read-only)، بينما الحاويات قابلة للتنفيذ وقصيرة الأجل (Ephemeral).
  • يستطيع المستخدمين التفاعل مع الحاويات، ويمكن للمسؤولين تعديل الإعدادات والشروط باستخدام أوامر Docker.

Docker Hub

مستودع Docker Hub هو مستودع عام لصور Docker، وهو الأكبر من نوعه، ويضم مكتبة ضخمة ومجتمعًا للصور الحاوية.

  • يحتوي على أكثر من 100,000 صورة حاوية، مصدرها مشاريع مفتوحة المصدر، مطورون، بائعو برمجيات، وغيرهم.
  • يحتوي Docker Hub على صور مُعتمدة من Docker Inc، بالإضافة إلى صور Docker Trusted Registry.

Docker Registry

نظام تخزين مفتوح المصدر لصور Docker، يُستخدم لتخزين الصور وتتبع إصداراتها في المستودعات.

  • يتميز بقدرته على التوسع، ويعمل كنظام توزيع للصور.
  • يستخدم علامات (Tags) لتحديد الصور وتمييزها.

Docker Run Utility (أداة التشغيل Docker Run)

تُعتبر أداة التشغيل docker run إحدى أوامر Docker التي تهدف إلى إطلاق حاوية.

  • كل حاوية في Docker هي مثيل لصورة، أو قد تكون عدة مثيلات لصورة واحدة.
  • يُمكن تشغيل جميع الحاويات بالتزامن عند تنفيذ أمر التشغيل.

Docker Desktop

تُعتبر Docker Desktop واجهة رسومية شاملة تحتوي على جميع مكونات Docker.

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

الجوانب الأمنية في Docker

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

لذلك، قامت Docker بتطبيق استراتيجيات متعددة لتعزيز الأمان، بما في ذلك:

  • إدخال العقد بشكل آمن.
  • فحص الصور (Image Scanning).
  • توزيع الهويات باستخدام التشفير.
  • توزيع الأسرار بشكل آمن.
  • تقسيم المجموعات (Cluster Segmentation).

كما قامت Docker بالتعاون مع أدوات فحص الحاويات مثل Aqua، NeuVector، وTwistlock لتعزيز الأمان. ومع ذلك، تقع على عاتق المطورين أيضًا مسؤولية اتخاذ تدابير أمان إضافية عند العمل على Docker، مثل:

  • تجنب تعريض المضيف الخاص بالحاويات للإنترنت.
  • استخدام صور الحاويات فقط من مصادر موثوقة.

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

لماذا تعتمد الشركات على حاويات Docker؟

تتميز الحاويات بمشاركة نظام التشغيل، مما يجعلها أكثر كفاءة مقارنة بأنظمة المحاكاة الافتراضية (Hypervisors).

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

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

تطبيقات Docker في الشركات:

  • يُمكن دمجها بسهولة في عمليات DevOps.
  • تُستخدم لإعداد بيئات تطوير محلية تحاكي بيئات الإنتاج تمامًا.
  • تدعم Docker الحاويات لتشغيل بيئات متعددة ذات إعدادات ونظم تشغيل وبرمجيات مختلفة.

الخلاصة

يزداد استخدام الحاويات بشكل تدريجي مع تزايد أهمية التطوير السحابي الأصلي (Cloud-Native Development). أصبح التطوير السحابي النموذج التجاري الأساسي لبناء التطبيقات، اختبارها، وتشغيلها، وDocker جزء أساسي من هذا النظام.

ساهمت Docker في تحويل اهتمام المطورين نحو بناء التطبيقات باستخدام الحاويات بدلًا من الاعتماد على البُنى التحتية التقليدية. إذا كنت تسعى لتبسيط تطوير التطبيقات لديك وتعزيز الكفاءة، فـ Docker هو الحل المثالي لتحقيق ذلك.

ما هي مراكز البيانات ولماذا هي مهمة؟

Soufiane Ab

خبير متمرس بالحاسب الالي والشبكات . مصمم غرافيك وواجهات ويب UI/UX صاحب عدة شركات ناشئة RACKNATECHNOLGY @FONTSrepo @DATAshel@ بالاضافة الى هذه المدونة عمق التقنية التي اقوم بالتدوين فيها بكل حب وشغف حول موضوعات تقنية.

اضافة تعليق

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.