Docker

menu icon

Docker

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

ما هو Docker؟

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

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

يشير Docker أيضا إلى Docker, Inc.‎ ‏(الرابط يوجد خارج IBM)، وهي الشركة التي تقوم ببيع النسخة التجارية من Docker، وإلى مشروع Docker مفتوح المصدر (الرابط موجود خارج IBM)، والذي تقوم Docker, Inc.‎ والعديد من المؤسسات الأخرى والأفراد بالمشاركة فيه.

كيف تعمل الحاويات، ولماذا تحظى بشعبية كبيرة

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

نتيجة لذلك، توفر تقنية الحاويات جميع وظائف ومزايا الأجهزة الافتراضية - بما في ذلك عزل التطبيقات، وقابلية التوسع الفعالة من حيث التكلفة، وقابلية التخلص - بالإضافة إلى مزايا إضافية مهمة:

  • أخف وزنا: على عكس الأجهزة الافتراضية، لا تحمل الحاويات البيانات الفعلية لنسخة نظام التشغيل بالكامل وبرنامج مراقبة الأجهزة الافتراضية؛ فهي تتضمن فقط عمليات نظام التشغيل والارتباطات اللازمة لتنفيذ الكود. ويتم قياس أحجام الحاويات بالميجابايت (مقابل الجيجابايت لبعض الأجهزة الافتراضية)، مما يتيح استخدام سعة الجهاز بشكل أفضل وأوقات بدء تشغيل أسرع.
  • كفاءة أكبر في استخدام المصادر: باستخدام الحاويات، يمكنك تشغيل عدة أضعاف نسخ التطبيق على نفس الجهاز كما يمكنك استخدام الأجهزة الافتراضية. هذا يمكن أن يقلل من إنفاقك على البيئة السحابية.
  • تحسين إنتاجية المطورين: مقارنة بالأجهزة الافتراضية، تكون الحاويات أسرع وأسهل في النشر والتوفير وإعادة التشغيل. وهذا يجعلها مثالية للاستخدام في مسارات اتصال التكامل المستمر والتسليم المستمر(CI/CD) ومناسبة بشكل أفضل لفرق التطوير التي تتبنى ممارسات Agile وDevOps.

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

تنزيل التقرير الكامل: الحاويات في المؤسسة (ملف PDF‏، 1.4 ميجابايت)

لماذا تستخدم Docker؟

تحظى Docker بشعبية كبيرة اليوم حتى أنه يتم استخدام "Docker" و"الحاويات" بالتبادل. لكن التقنيات الأولى المتعلقة بالحاويات كانت متاحة لسنوات — حتى عقود (يوجد الرابط خارج IBM) — قبل طرح Docker للجمهور في عام 2013.

والجدير بالذكر أنه في عام 2008، تم تنفيذ LinuXContainers (LXC) في Linux kernel، الأمر الذي مكن بالكامل من إجراء المحاكاة الافتراضية لنسخة واحدة من Linux. بينما لا يزال LXC مستخدما حتى اليوم، تتوفر تقنيات أحدث تستخدم Linux kernel. ‏Ubuntu، هو نظام تشغيل Linux حديث مفتوح المصدر، يوفر أيضا هذه الإمكانية.

عزز Docker إمكانيات حاويات Linux الأصلية بتقنيات تتيح:

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

تعمل حاويات Docker اليوم أيضا مع وحدة خدمة Microsoft Windows. ويقوم معظم مقدمي الخدمات السحابية بتقديم خدمات محددة لمساعدة المطورين على بناء التطبيقات ونقلها وتشغيلها في حاويات باستخدام Docker.

لهذه الأسباب، سرعان ما انتشر اعتماد Docker واستمر في الارتفاع. حتى كتابة هذه السطور، قامت شركة Docker Inc.‎ بتسجيل 11 مليون مطور و13 مليار عملية تنزيل لصور الحاوية كل شهر (الرابط يوجد خارج IBM).

أدوات ومصطلحات Docker

تتضمن بعض الأدوات والمصطلحات التي ستواجهها عند استخدام Docker:

DockerFile

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

صور Docker

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

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

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

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

حاويات Docker

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

Docker Hub

Docker Hub (الرابط يوجد خارج IBM) هو مستودع التخزين العام لصور Docker التي تقوم باستدعاء نفسها "أكبر مكتبة ومجتمع في العالم لصور الحاوية". وهو يحمل أكثر من 100,000 من صور الحاويات التي تم الحصول عليها من موردي البرامج التجارية، والمشاريع المفتوحة المصدر، والمطورين الأفراد. ويتضمن الصور التي تم إنتاجها بواسطة شركة Docker, Inc.‎ والصور المعتمدة التي تنتمي إلى Docker Trusted Registry، والعديد من الآلاف من الصور الأخرى.

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

Docker daemon

Docker daemon هي خدمة يتم تشغيلها على نظام التشغيل الخاص بك، مثل Microsoft Windows أو Apple MacOS أو iOS. تقوم هذه الخدمة بتكوين صور Docker وإدارتها نيابة عنك باستخدام أوامر من العميل، حيث تعمل كمركز تحكم في تنفيذ Docker الخاص بك.

سجل Docker

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

نشر وتنسيق Docker

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

Docker Compose

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

Kubernetes

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

Kubernetes عبارة عن منصة تنسيق للحاوية مفتوحة المصدر تنحدر من مشروع تم تطويره للاستخدام الداخلي في Google. يقوم Kubernetes بجدولة وتشغيل المهام آليا وجعلها جزءا لا يتجزأ من إدارة البنى القائمة على الحاويات، بما في ذلك نشر الحاويات، والتحديثات، واكتشاف الخدمة، وإعداد مساحة التخزين، وموازنة التحميل، ومراقبة الحالة العامة، والمزيد. بالإضافة إلى ذلك، فإن النظام الإيكولوجي مفتوح المصدر لأدوات Kubernetes ‏ — بما في ذلك Istio وKnative — يمكن المؤسسات من نشر المنصة كخدمة (PaaS) عالية الإنتاجية للتطبيقات المدمجة في حاويات والانتقال سريعا إلى الحوسبة بدون وحدة خدمة.

للتعمق بشكل أكثر في Kubernetes، شاهد مقطع الفيديو "شرح Kubernetes":

شرح Kubernetes ‏(10:59)

Docker وIBM Cloud

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

اتخذ الخطوة التالية:

  • نشر أنظمة مجموعات Kubernetes عالية الإتاحة والتي يتم إدارتها بالكامل باستخدام Red Hat OpenShift on IBM Cloud، وهي خدمة OpenShift التي يتم إدارتها والتي تعزز نطاق المؤسسة وأمان IBM Cloud للتشغيل الآلي للتحديثات وتوسيع النطاق والإعداد.
  • نشر التطبيقات وتشغيلها عبر البيئات المحلية وحوسبة الحافة وبيئات التشغيل السحابية العامة من أي مورد باستخدام IBM Cloud Satellite، وهو حل سحابي موزع يتم إدارته.
  • تبسيط ودمج بحيرات البيانات الخاصة بك عن طريق النشر السلس لمساحات تخزين المؤسسة التي تدعم الحاوية عبر بيئات التشغيل السحابية المحلية والعامة باستخدام حلول التخزين السحابية المختلطة من IBM.
  • جعل إدارة تكنولوجيا المعلومات المختلطة المعقدة بسيطة باستخدام خدمات IBM Cloud التي يتم إدارتها.

البدء باستخدام حساب IBM Cloud اليوم.