تعريف الحاويات
في أثناء قيام Contoso بترحيل أحمال العمل المختلفة وجعلها ظاهرية، قد يحدث خيار تحزيم لبعض أحمال العمل في حاويات. سيقوم مسؤول Windows Server بتقييم الحاويات وفهم كيفية عملها وفوائد استخدامها. قد تشمل الفوائد التنقل، ومرونة التنفيذ، وزيادة الكفاءة، وكثافات الخادم. كل هذه الفوائد تساهم في تحسين أفضل لأحمال عمل الخادم وتناسق بيئات التطوير.
ما هي الحاويات؟
تستخدم الحاوية لحزم تطبيق مع جميع تبعياته وتجريده من نظام التشغيل المضيف (OS) الذي سيتم تشغيله فيه. توفر الحاويات بيئة خفيفة للتطوير ووقت التشغيل يمكن فيها تشغيل التطبيقات ومشاركتها بسهولة في أثناء التطوير. والحاوية ليست معزولة عن نظام التشغيل المضيف فحسب، بل هي معزولة أيضًا عن غيرها من الحاويات. توفر الحاويات المعزولة وقت تشغيل ظاهري، وهو يمكن أن يحسن أيضًا أمان التطبيقات التي تعمل داخلها وموثوقيتها.
عادة ما يتم تطوير تطبيق برنامج لتشغيله على معالج مدعوم، وأجهزة، ونظام أساسي لنظام تشغيل. وتتطلب تطبيقات البرامج عادةً ترميزًا إضافيًا لتوفير الدعم للأنظمة الأساسية لوقت التشغيل المختلف. مع العديد من أنظمة الحوسبة المتنوعة، هناك حاجة إلى نظام أساسي أكثر كفاءة لتطوير البرامج وإدارتها لدعم قابلية النقل بين بيئات الحوسبة المتعددة. تساعد الحاويات على توفير قابلية النقل هذه.
فوائد استخدام الحاويات
تشمل فوائد استخدام الحاويات ما يلي:
القدرة على التشغيل في أي مكان. يمكن تشغيل الحاويات على أنظمة أساسية مختلفة مثل أنظمة التشغيل Linux وWindows وMac. يمكن استضافتها على محطة عمل محلية، أو على خوادم في مراكز البيانات المحلية، أو توفيرها في السحابة.
العزل. تبدو الحاوية بالنسبة إلى التطبيق وكأنها نظام تشغيل كامل. فوحدة المعالجة المركزية والذاكرة والتخزين وموارد الشبكة جميعها يتم تظهيرها داخل الحاوية وعزلها عن النظام الأساسي المضيف والتطبيقات الأخرى.
زيادة الكفاءة. يمكن توزيع الحاويات بسرعة، وتحديثها، وتحجيمها لدعم إمكانيات أكثر مرونة للتطوير والاختبار، ودورة حياة الإنتاج. ولأنها أكثر كفاءة من حيث الموارد التي تستهلكها، فإن أثرها أصغر، ما يسمح بزيادة الكثافة على الخوادم.
بيئة تطوير متناسقة. يستخدم المطورون الحاويات كبيئة تطوير متناسقة ويمكن التنبؤ بها، وقادرة على دعم لغات التطوير المختلفة مثل Java و.NET وPython وNode.js. يعرف المطورون أنه بغض النظر عن مكان توزيع التطبيق، فإن الحاوية ستضمن تشغيل التطبيق كما هو مطلوب.
كيفية عمل الحاويات
للمعالج في كمبيوتر Windows القياسي وضعان مختلفان: وضع النواة ووضع المستخدم. تعمل مكونات نظام التشغيل الأساسي ومعظم برامج تشغيل الأجهزة في وضع النواة، بينما تعمل التطبيقات في وضع المستخدم.
عند تثبيت تكنولوجيا الحاوية على حاسب، تقوم كل حاوية بإنشاء مخزن معزول وخفيف يُستخدم لتشغيل تطبيق على نظام التشغيل المضيف. تبني الحاوية على نواة نظام التشغيل المضيف وتشارك أغلبها للوصول إلى نظام الملفات والسجل.
ولكل حاوية نسختها الخاصة من ملفات نظام وضع المستخدم المعزولة عن الحاويات الأخرى وعن بيئة وضع المستخدم الخاص بالمضيف. يتم توفير القدرة على عزل وضع المستخدم بواسطة صورة قاعدة الحاوية، والتي تتكون من ملفات نظام وضع المستخدم المطلوبة لدعم تطبيق مجمع. توفر قوالب الصور الأساسية للحاوية طبقة قاعدية من خدمات نظام التشغيل المستخدمة من قبل التطبيق المحزم في الحاوية التي لم يتم توفيرها (أو تقييدها) من طبقة وضع النواة للمضيف.
تقع الطبقة التي يتم فيها إجراء تغييرات التطبيق والرمز فوق طبقات صورة نظام التشغيل الأساسية للحاويات التي تم إنشاؤها مسبقا. يتم تطوير طبقات نظام التشغيل الأساسية هذه وتحديثها بشكل منفصل عن طبقات الحاوية التي يتم استخدامها بشكل نشط لتغييرات التطبيق أو التعليمات البرمجية. يتم سحب الطبقات الأساسية إلى بيئة العمل المحلية دون تحديثها، ثم يبدأ العمل في طبقات الحاوية التي تعمل على الطبقات الأساسية. يسمح ذلك بالحصول على بيئات تطوير أصغر وأخف وأكثر قابلية للحمل.
عند إنشاء صورة الحاوية الخاصة بك لاستضافة التطبيق الخاص بك، تبدأ بالاستفادة من صورة نظام التشغيل الأساسي للحاوية أو صورة حاوية تم إنشاؤها مسبقا تحتوي على التبعيات التي تحتاجها. أعلى هذه الطبقات، يمكنك إنشاء الطبقات الخاصة بك مع التطبيق الذي تريد تشغيله في حاوية. يتم إنشاء كل عملية لإنشاء صورة الحاوية أعلى العملية الأخيرة. يضيف هذا إلى حجم الصورة، ولكنه يسمح لك بفصل نظام التشغيل وإطار العمل والتبعيات وطبقات التطبيق بشكل ملائم.
الحاويات والخدمات المصغرة
يتم تعريف تطبيقات الخدمات المصغرة على أنها نهج معماري أصلي سحابي يتكون فيه تطبيق واحد من العديد من المكونات أو الخدمات الأصغر المقترنة بشكل فضفاض وقابلة للنشر بشكل مستقل. يمكن تمثيل كل من هذه المكونات أو الخدمات الأصغر بحاوية. ومع ذلك، لا تنفذ الحاويات بالضرورة بنية الخدمات المصغرة.
يمكن أن تستضيف الحاوية تطبيقا متجانسا، ولكنها لم تكن مصممة لهذا الغرض. بشكل افتراضي، يفترض Docker (أو وقت تشغيل حاوية آخر) بالإضافة إلى منسق الحاوية أنه يمكن دائما حذف/إزالة الحاوية بأمان ويمكن أن تأخذ حاوية أخرى مكانها ببساطة إذا لزم الأمر. على الجهاز الظاهري، إذا قمت بتكوين تطبيق للكتابة إلى قرص الجهاز الظاهري، يمكنك إيقاف الجهاز الظاهري وبدء تشغيله بأمان وستستمر البيانات في القرص - تماما كما سيتم تشغيل الجهاز الظاهري بأمان ومتابعة تشغيله. باستخدام الحاويات، إذا قمت بإزالة حاوية وإحضار حاوية أخرى في مكانها، فلن تكون هناك سوى الطبقات الموجودة من صورة الحاوية هذه. في بيئة الخدمات المصغرة، يجب ألا تكون هذه مشكلة إذا كان لديك استمرار للحالة والبيانات.
بينما يمكنك تشغيل حاوية وإدارتها مثل الجهاز الظاهري إلى حد كبير، يوصى باعتماد ممارسات فصل الحالة والبيانات والتأكد من أن الحاوية الخاصة بك يمكن أن تستمر في الحذف. سيسمح لك هذا بالاستفادة من الممارسات الأخرى مثل DevOps.
في الممارسة العملية، يجب عدم تخزين أي بيانات أو حالة داخل صورة الحاوية وطبقاتها. بدلا من ذلك، يجب استخدام التخزين الثابت الخارجي الذي يسمح لأي مثيل حاوية بالوصول إليه.