الحاويات

menu icon

الحاويات

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

ما هي الحاويات؟

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

وللقيام بذلك، تستفيد الحاويات من شكل من أشكال أنظمة التشغيل الافتراضية حيث يتم الاستفادة من خصائص نظام التشغيل (في حالة الجزء المركزي لنظام التشغيل Linux‏، هي مساحات الاسم namespaces ومجموعات التحكم cgroups‏) لعزل العمليات وللتحكم في حجم مساحة CPU والذاكرة والقرص التي يمكن لهذه العمليات التوصل اليها.

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

ظهرت الحاويات لأول مرة منذ عقود بنسخ مثل FreeBSD Jails وAIX Workload Partitions، لكن معظم المطورين الحديثون يتذكرون عام 2013 باعتباره بداية عصر الحاوية الحديث مع تقديم Docker

الحاويات مقابل الأجهزة الافتراضية (VMs)

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

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

لإلقاء نظرة أعمق على هذه المقارنة، تحقق من "الحاويات مقابل الأجهزة الافتراضية: ما الفرق؟"

فوائد الحاويات

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

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

في استطلاع رأي حديث أجرته شركة IBM ‏(PDF‏، 1.4 ميجابايت)، أفاد المطورون والمسؤولون التنفيذيون في مجال تكنولوجيا المعلومات بالعديد من الفوائد الأخرى لاستخدام الحاويات. قم باستكشافها باستخدام الأداة التفاعلية أدناه:

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

حالات الاستخدام للحاويات

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

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

العمل في حاويات

يجب تصميم البرامج وتجهيزها بشكل مختلف من أجل الاستفادة من الحاويات — وهي عملية يشار إليها عادة باسم الدمج في حاويات.

عند دمج تطبيق في حاوية، فان العملية تتضمن تجهيز وتجميع التطبيق مع متغيرات بيئة التشغيل الخاصة به، وملفات التوصيف، والمكتبات، وارتباطات البرنامج. النتيجة هي صورة الحاوية التي يمكن بعد ذلك تشغيلها على منصة الحاوية. للحصول على مزيد من المعلومات، شاهد مقطع الفيديو هذا حول "شرح الدمج في حاوية" ‏(08:09):

تنسيق الحاويات باستخدام Kubernetes

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

لمواجهة هذا التحدي، ظهر تنسيق الحاويات كطريقة لإدارة كميات كبيرة من الحاويات طوال دورة حياتها، بما يتضمن:

  • الاعداد
  • التكرار
  • مراقبة الحالة العامة
  • تخصيص المصادر
  • توسيع النطاق وموازنة التحميل
  • التنقل بين الأنظمة الرئيسية الفعلية

في حين أنه تم إنشاء العديد من منصات تنسيق الحاويات (مثل Apache Mesos وNomad وDocker Swarm) للمساعدة في مواجهة هذه التحديات، أصبح Kubernetes، وهو مشروع مفتوح المصدر، الذي قدمته Google في عام 2014، أكثر منصات تنسيق الحاويات شيوعا، وهو الطريقة التي اعتمدتها غالبية الصناعات.

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

لمعرفة المزيد حول Kubernetes، يقدم ساي فينام نظرة عامة على Kubernetes في مقطع الفيديو أدناه (10:59):

 

يتم تشغيل Kubernetes الآن بواسطة Cloud Native Computing Foundation ‎(CNCF)، وهي مجموعة صناعية لا تعتمد على الموردين تحت رعاية Linux Foundation.

Istio، وKnative، والنظام الإيكولوجي للحاويات المتوسع

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

Istio

نظرا لأن المطورين يستفيدون من الحاويات لبناء هياكل الخدمات المصغرة وتشغيلها، فإن اهتمامات الإدارة تتجاوز اعتبارات دورة الحياة للحاويات الفردية والطريقة التي تتواصل بها أعداد كبيرة من الخدمات الصغيرة — والتي يشار إليها غالبا باسم "شبكة الخدمة" — وتتصل ببعضها البعض. تم تكوين Istio ليسهل على المطورين إدارة التحديات المرتبطة بالاكتشاف وحركة إرسال واستقبال البيانات والمراقبة والأمان والمزيد. للحصول على مزيد من المعلومات حول Istio، راجع "ما هو Istio؟" وشاهد مقطع الفيديو التوضيحي هذا من Istio ‏(05:06):

 

Knative

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

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

للحصول على مزيد من المعلومات حول Knative، شاهد مقطع الفيديو هذا المسمى "ما هو Knative؟" ‏(07:58):

الحاويات وIBM Cloud

تم بناء خدمات حاويات IBM Cloud على تقنيات مفتوحة المصدر لتسهيل رحلتك إلى البيئة السحابية وتسريعها. يمكن بناء التطبيقات المدمجة في حاويات باستخدام أدوات التكامل المستمر والتسليم المستمر (CI/CD). وتنسيق الحاويات باستخدام خدمات Red Hat OpenShift أو Kubernetes. وتحديث التطبيقات الموجودة بالفعل باستخدام برامج IBM الوسيطة والمكونات مفتوحة المصدر في IBM Cloud Paks.

تعرف على المزيد حول الحاويات على IBM Cloud.

قم بالتسجيل للحصول على IBMid وأنشئ حساب IBM Cloud الخاص بك.