المحاكاة الظاهرية للحاويات
- 13 دقائق
تقوم المحاكاة الظاهرية باستخدام برامج Hypervisor مثل Zen وHyper-V بتقسيم خادم فعلي إلى عدة خوادم ظاهرية وتعزل أحمال العمل التي تعمل في كل منها. لكن الأجهزة الظاهرية لا تخلو من عيوبها:
متطلبات الموارد: تتطلب الأجهزة الظاهرية الكثير من ذاكرة الوصول العشوائي. إذا كان خادم Windows يستضيف 10 أجهزة ظاهرية لـ Windows، فسيتم تحميل Windows في الذاكرة 11 مرة - نسخة واحدة للخادم نفسه، ونسخة واحدة لكل جهاز ظاهري. لا تستطيع الأجهزة الظاهرية مشاركة مثيل واحد في الذاكرة لنظام التشغيل، لأن الهدف من الظاهرية هو إنشاء خوادم ظاهرية تعمل بشكل مماثل للخوادم الفعلية. لا يمكن لجهازين ظاهريين مشاركة أي نظام تشغيل أكثر من خادمين فعليين. هذا صحيح بصرف النظر عما إذا كان نظام التشغيل هو Windows أو Linux أو أي شيء آخر (مثل macOS).
قابلية النقل: تميل صور الجهاز الظاهري إلى أن تكون كبيرة إلى حد ما (غالبا حسب ترتيب عشرات أو مئات الجيجابايت)، ويرجع ذلك جزئيا إلى أنها، أيضا، تخزن نسخة كاملة من نظام التشغيل. هذا يحد من قابليتها للنقل. يمكن نقل صورة بحجم 1 ميجابايت بسهولة من جهاز إلى آخر، حتى إذا كان الاتصال بطيئًا إلى حد ما. على النقيض من ذلك، لا يتم نقل صورة جهاز ظاهري بحجم 200 جيجابايت بسهولة باستخدام اتصال شبكة نموذجي. قد يتم نقله باستخدام وسائط فعلية مثل محرك أقراص USB أو قرص ثابت، ولكن هذا يفرض تحديات لوجستية في سيناريوهات الحوسبة السحابية حيث لا يمكنك الوصول إلى الخوادم الفعلية في مركز البيانات.
وقت بدء التشغيل: تشغيل جهاز ظاهري يشبه تمهيد جهاز كمبيوتر فعلي. يجب تشغيل الأجهزة الظاهرية وتهيئتها، ويجب تحميل نظام التشغيل وتهيئته، ويجب تحميل برامج تشغيل الأجهزة وتوصيالها بالأجهزة الظاهرية، وما إلى ذلك. وبالتالي، يمكن أن يتطلب الجهاز الظاهري، بمجرد إنشائه، دقيقة أو أكثر للبدء. في حين أن وقت بدء التشغيل المقاس بالدقائق غير مهم مقارنة بالوقت المطلوب لشراء خادم فعلي وتثبيته وتكوينه، فإنه يمثل قيدًا كبيرًا عند إنشاء أجهزة ظاهرية سريعة لتلبية الطلب المتزايد أو إنشاء وتدمير أجهزة ظاهرية باستمرار لخدمة أحمال العمل المتغيرة.
هذه ليست سوى بعض الأسباب التي تجعل الحاويات تشهد اعتمادا واسع النطاق، ليس فقط في حوسبة السحابة، ولكن في مراكز البيانات المحلية وأجهزة الكمبيوتر الفردية أيضا. في هذا الدرس، نناقش ماهية الحاويات وكيف تعمل والمزايا التي تقدمها. نقدم أيضًا Docker، أكثر أنظمة الحاويات الأساسية شيوعًا في العالم، ونقدم بعض الطرق التي تم بها دمجها في الأنظمة الأساسية السحابية الشائعة.
ما هي الحاوية؟
تُحدث الحاويات ثورة في تكنولوجيا المعلومات وتطوير البرمجيات. وهي تسمح بتجميع البرامج والملفات في حزم قائمة بذاتها تعرف باسم صور الحاوية التي تعمل على أجهزة كمبيوتر مختلفة (حقيقية أو ظاهرية) وتفعل ذلك بطريقة متسقة ويمكن التنبؤ بها. يأتي الوصف التالي من موقع Docker على الويب:
الحاوية هي وحدة قياسية من البرامج تقوم بتجميع التعليمات البرمجية وجميع تبعياتها بحيث يعمل التطبيق بسرعة وموثوقية من بيئة حوسبة إلى أخرى. صورة حاوية Docker عبارة عن حزمة برامج خفيفة الوزن ومستقلة وقابلة للتنفيذ تتضمن كل ما يلزم لتشغيل تطبيق: التعليمات البرمجية ووقت التشغيل وأدوات النظام ومكتبات النظام والإعدادات.
في حين تقوم برامج Hypervisor بإضفاء الطابع الظاهري على الأجهزة، تقوم الحاويات بمحاكاة أنظمة التشغيل الظاهرية. يوضح الشكل 7 الاختلافات الرئيسية بين الأجهزة الظاهرية والحاويات1. على اليسار، يستضيف الخادم نسخة واحدة من نظام التشغيل ونسخة واحدة من وقت تشغيل Docker. كما تستضيف ستة تطبيقات في ست حاويات، يستخدم كل منها نظام تشغيل المضيف. على اليمين، يستضيف نفس الخادم ثلاثة أجهزة ظاهرية، كل منها يقوم بتحميل نسخته الخاصة من نظام التشغيل. يمكن لخادم معين أن يستضيف حاويات عدة مرات أكثر مما يمكن أن يستضيفها جهاز ظاهري بسبب متطلبات الموارد الأصغر للحاويات.
الشكل 7: الحاويات مقابل الأجهزة الظاهرية.
تتشابه الحاويات مع الأجهزة الظاهرية من حيث أنها توفر بيئة يمكن التنبؤ بها ومعزولة يمكن تشغيل البرنامج فيها. ولكن نظرًا إلى أن الحاويات أصغر من الأجهزة الظاهرية، فإنها تتطلب RAM أقل ويتم نقلها بسهولة أكبر من آلة إلى أخرى. كما أنها تبدأ بسرعة أكبر - غالبًا في ثانية أو ثانيتين - لأنهم لا يضطرون إلى جعل الأجهزة ظاهرية ولا تحميل نظام التشغيل وتهيئته. تشترك الحاويات المتعددة التي تعمل على جهاز واحد في نفس نواة نظام التشغيل، حتى إذا كانت الحاويات نفسها مختلفة تمامًا - أي تحتوي على برامج مختلفة ويتم إنشاؤها من صور حاوية مختلفة.
الحاويات والأجهزة الظاهرية ليست حصرية بشكل متبادل. في الواقع، يتم استخدامها بشكل متكرر معًا. يقوم مستخدمو Windows الذين يقومون بتشغيل البرامج الموجودة في حاويات Linux بتشغيل Linux في جهاز ظاهري واستضافة Docker والبرامج الحاوية في جهاز ظاهري. في السحابة، تتم استضافة الحاويات في أجهزة ظاهرية تمامًا مثل أحمال العمل السحابية الأخرى.
لا تحل الحاويات محل الأجهزة الظاهرية، ولا ينبغي اعتبارها مكافئة وظيفية. على عكس الأجهزة الظاهرية، لا تسمح الحاويات لأنظمة تشغيل متعددة بالعمل جنبًا إلى جنب على نفس الجهاز. على سبيل المثال، إذا كان الجهاز المضيف يعمل بنظام Linux، فإنه يجب أن تستخدم جميع الحاويات الموجودة على هذا الجهاز نظام Linux أيضًا. (يقوم مستخدمو Windows بتشغيل حاويات Linux بشكل متكرر على Windows، ولكنه يعمل لأن Docker يقوم بتشغيل جهاز Linux ظاهري على جهاز Windows ويستضيف الحاويات في الجهاز الظاهري.) بالإضافة إلى ذلك، نظرا لأن الحاويات لا تقوم بإضفاء الطابع الظاهري على الأجهزة، فهي غير مناسبة للتطبيقات التي تقوم بمهام على مستوى النظام تتضمن تفاعلا مباشرا مع الأجهزة. يسهل التفكير بأن برامج Hypervisor تجعل الجهاز بأكمله ظاهريًا، بما في ذلك أجهزته، بينما تقوم الحاويات بجعل البرامج ظاهرية وتستخدم نظام تشغيل المضيف كنظام أساسي لنظام التشغيل.
Docker
Docker هي نظام الحاويات الأساسي الأكثر شيوعًا. إنه مجاني وذو مصدر مفتوح ويعمل على جميع توزيعات Linux الرئيسية وكذلك على Windows Server 2016. في عام 2015، تبرعت Docker بمواصفات صورة الحاوية ورمز وقت التشغيل لمبادرة Open Container (OCI) للمساعدة في توحيد النظام البنائي للحاويات وتنميته. في عام 2017، تبرعت Docker بوقت تشغيل حاوية قياسي في الصناعة إلى مؤسسة حوسبة السحابة الأصلية (CNCF). تم إنشاء وقت التشغيل هذا مع التركيز على البساطة والقوة وقابلية النقل.
يوضح الشكل 8 كيف تتم هندسة النظام الذي يقوم بتشغيل التطبيقات في حاويات Docker. يبدأ مع عميل Docker، وهو أداة تستخدم لإنشاء وتشغيل وإدارة الحاويات وصور الحاوية. (تشكل صورة الحاوية مخططا لحاوية قيد التشغيل، فقط صورة الجهاز الظاهري تحدد ما يتم تحميله في جهاز ظاهري قيد التشغيل.) يوجد العديد من عملاء Docker، بما في ذلك واجهة سطر الأوامر الخاصة ب Docker، والتي تعمل على جميع أنظمة التشغيل الشائعة، و Kitematic، والتي تتميز بواجهة مستخدم رسومية وتعمل على Windows وmacOS. استولت Docker على Kitematic في عام 2015 وجعلته جزءًا من Docker Toolbox، والذي يتوفر مجانًا.
الشكل 8: بنية Docker.
بمجرد إنشاء صورة الحاوية، يتم تحميلها إلى مستودع في سجل الحاوية. يتمثل الغرض من سجل الحاوية في تخزين صور الحاويات وإتاحتها إما بشكل عام أو خاص. يقدم Docker سجل حاويات مستندا إلى السحابة يعرف باسم Docker Hub، والذي يوفر للمستخدمين مستودعات عامة مجانية غير محدودة ومستودع خاص مجاني واحد. كما أنه يسمح للآخرين - حتى يشجعهم - بإنشاء سجلات خاصة بهم ويوفر سجل Docker مفتوح المصدر للمساعدة في جهودهم. هذا هو أحد الأسباب التي جعلت كبار موفري خدمات السحابة بما في ذلك Amazon وMicrosoft وGoogle قادرين على تقديم سجلات متوافقة مع Docker في الأنظمة الأساسية السحابية.
يتم بدء تشغيل الحاوية باستخدام عميل Docker لإصدار أمر إلى Docker daemon وتحديد الصورة التي يجب إنشاء الحاوية منها. (البرنامج الخفي هو برنامج يعمل في الخلفية على الكمبيوتر المضيف.) ثم يقوم البرنامج الخفي بإنشاء حاوية وتحميل الصورة فيها. بمجرد التشغيل، يمكن بدء تشغيل الحاوية وإيقافها عن طريق إصدار أوامر من Docker client. لا يجب أن يتواجد Docker client وDocker daemon على نفس الكمبيوتر. في سيناريو نموذجي، يعمل العميل على جهاز واحد بينما يعمل البرنامج الخفي على خادم بعيد، ويستخدم العميل بروتوكول Secure Shell (SSH) لإرسال الأوامر إلى daemon.
خدمات الحاويات في حوسبة السحابة
بينما يتمتع المستخدمون بحرية اتباع نهج IaaS للحاويات عن طريق إنشاء أجهزة ظاهرية وتثبيت وقت تشغيل Docker فيها، فإن موفري خدمات السحابة، في إشارة إلى أهمية الحاويات، يقدمون خدمات PaaS لدعم تشغيل التطبيقات الموجودة في الحاوية. يوفر Azure مثيلات Azure Container، التي توفر بيئة قوية وقابلة للتطوير وسهلة الاستخدام لاستضافة التطبيقات الموجودة في حاويات، بالإضافة إلى Azure Container Registry، الذي يسمح باستضافة صور الحاوية في Azure بدلاً من Docker Hub أو خارجي آخر السجلات وتحميلها بسرعة في مثيلات حاوية Azure. تقدم أمازون AWS Elastic Container Registry (ECR) وAWS Elastic Container Service (ECS)، بينما تقدم Google Container Registry والحاويات على Compute Engine.
يوضح الشكل 9 كيفية عمل ECR و ECS في Amazon معا لتوفير مكدس Docker المستند إلى السحابة لاستضافة الحاويات وصورالحاوية 2. يتم إنشاء صور الحاوية وتحميلها إلى ECR، وهو سجل حاوية متوافق مع Docker على غرار Docker Hub. (لا يلزم تخزين صور الحاوية التي تعمل في AWS في ECR، ولكن تخزينها هناك يوفر العديد من المزايا، بما في ذلك التحكم الدقيق في الوصول باستخدام هوية AWS، والتشفير التلقائي، ودعم إصدار صور الحاوية، وتحميل أسرع، خاصة إذا تم تخزين صور الحاوية وتشغيلها في نفس مركز البيانات.) من هناك، يتم تحميل الصور في حاويات مستضافة في ECS أو خدمات سحابية أخرى.
الشكل 9: الحاويات في AWS.
يعمل سجل حاويات Azure ومثيلات حاوية Azure بنفس الطريقة ولكن استخدام Microsoft Entra بدلا من هوية AWS للتحكم في الوصول إلى صور الحاوية. يتمثل أحد الاختلافات بين دعم الحاوية في AWS وAzure في أن AWS تستخدم مجموعة من البرامج مفتوحة المصدر والتكنولوجيا الخاصة، في حين أن مكدس حاويات Azure مبني بنسبة 100% من مصدر مفتوح. ومن ثمَّ، فإن أي أداة تعمل مع Docker تعمل مع Azure أيضًا. بالإضافة إلى ذلك، فإن أوامر Azure Cloud Shell وAzure CLI لإنشاء صور حاوية Docker وإدارتها. لا تلغي هذه الأوامر تمامًا الحاجة إلى أدوات Docker client، لكنها تغطي حالات الاستخدام الأكثر شيوعًا ويتم تحسينها لـ Azure.
وفي الآونة الأخيرة، بدأ موفرو خدمات السحابة في إضافة دعم الحاويات إلى خدمات PAAS مختارة. Azure، على سبيل المثال، يقدم Azure Web Apps للحاويات، والتي هي أساسًا Azure App Service مع إمكانية إضافية لتحميل البرنامج من صورة حاوية. اتخذت أمازون خطوات مماثلة لدمج حاويات Docker مع Elastic Beanstalk.
تزامن الحاوية
يوفر Docker البنية الأساسية لبناء الحاويات وتشغيلها، ولكن هناك حاجة إلى مستوى أعلى من الإشراف لتنظيم إجراءات الحاويات وقياس أحمال العمل بالحاويات بنفس الطريقة التي يتم بها تحجيم الأجهزة الظاهرية. على الرغم من وجود مجموعة متنوعة من أدوات تنسيق الحاويات، فقد استقرت الصناعة إلى حد كبير على Kubernetes، التي نشأت من مشروع مفتوح المصدر من قِبل Google، بصفتها المنسق المفضل. اليوم، يقدم كبار موفري خدمات السحابة تطبيقات مُدارة لـKubernetes تسهل تشغيل الحاويات على الأنظمة الأساسية لديها وإدارتها باستخدام Kubernetes. تشير «EKS» في الشكل 9 إلى خدمة Elastic Kubernetes. يقدم Azure خدمة تكميلية تسمى خدمة Azure Kubernetes (AKS)، بينما يقدم Google Cloud Platform محرك Kubernetes.
المراجع
- دوكر (2019). ما هي الحاوية؟https://www.docker.com/resources/what-container.
أمازون (2019). كيف تعمل خدمة السحابة المرنة لأمازون. https://aws.amazon.com/ecs/.
اختبر معلوماتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟