الحاوية في DevOps: كل ما تحتاج إلى معرفته
نشرت: 2022-09-16تسمح الحاوية للشركات بإضفاء الطابع الافتراضي على نظام التشغيل وتثبيت التطبيقات في مناطق معزولة تسمى الحاويات.
الحاوية هي طريقة حديثة لإنشاء التطبيقات.
دعنا نتعمق في كيفية إصابة النظام القديم وبنيته بحاجز إلى النقطة التي بدأ فيها الناس في الاقتباس ، "لا يعمل الكود الخاص بي ؛ لا أعرف السبب! الكود يعمل ، لكن لست متأكدًا من السبب! "
مع نمو التطبيق ، تغير تعريف التطبيق من مجرد جزء من التعليمات البرمجية إلى مجموعة من التعليمات البرمجية والثنائيات والتكوينات وبيئة التشغيل.
تخيل وضعًا كنا فيه كثيرًا في أيامنا السابقة. على الكمبيوتر المحمول ، طور المطور بعض كود Java 8. لم يعمل نفس الرمز على خادم الويب / VM. بعد الكثير من عمليات استكشاف الأخطاء وإصلاحها ، تبين أن إصدار Java الخاص بالخادم هو JDK11.
خجول؟
ظل الرمز كما هو ، لكن البرنامج الذي يدعم الرمز كان له تكوين مختلف. بسبب شيء صغير ، واجه المطورون الكثير من المتاعب. يمكن قول الشيء نفسه أثناء نقل جزء من التعليمات البرمجية من Linux إلى نظام التشغيل Windows.
أدت النفقات العامة لإدارة النظام القديم وقابلية التوسع وعدم فعالية التكلفة إلى اعتماد الحوسبة السحابية ، حيث تمت استضافة عبء العمل على الأجهزة الافتراضية التي يوفرها العديد من موفري السحابة. هذا ليس سوى الافتراضية.
المحاكاة الافتراضية ، بعبارات بسيطة ، هي عدة أنظمة تشغيل (OSs) على خادم واحد / جهاز افتراضي يوفره مزود السحابة / مركز البيانات. تقوم المحاكاة الافتراضية بعزل التطبيقات دون الحاجة إلى أجهزة مادية أو الاضطرار إلى معرفة ما بداخلها.
ومع ذلك ، فإن هذه البنية أيضًا لم تصمد أمام اختبار الزمن ، وجاءت الحاويات بالحاويات.
تركز الحاوية على تقسيم أنظمة التشغيل إلى أجزاء يمكن استخدامها بكفاءة أكبر من خلال امتلاك نظام التشغيل الخاص بها. إنها بيئة صغيرة صغيرة تقوم بتشغيل رمز التطبيق دون القلق بشأن نظام التشغيل أو الأجهزة التي تعمل في الجهاز الظاهري.
الآن ، دعونا نناقش الحاوية بالتفصيل.
ما هو الحاوية؟

تعتبر الحاوية نوعًا من المحاكاة الافتراضية لنظام التشغيل حيث يتم تجميع جميع مكونات التطبيق ، بما في ذلك البيئة ، ويعرف أيضًا باسم نظام التشغيل الذي سيتم تشغيله فيه ، في مساحة معزولة على الجهاز الظاهري تسمى الحاويات. نظام التشغيل الأساسي لهذه الحاويات هو نفسه ، ولكن لديهم نظامهم الخاص بهم كجزء من التكوين الخاص بهم.
الحاويات ليست واسعة النطاق ، وأنظمة ثقيلة. بدلاً من ذلك ، فهي صغيرة الحجم ومحمولة وسهلة التشغيل أو الإعداد. عندما يضع أحد المطورين تطبيقًا في حاويات ، يتم فصل الحاوية عن نظام التشغيل المضيف ويكون لها وصول محدود إلى موارد النظام ، مثل جهاز افتراضي خفيف الوزن. يمكن تشغيل التطبيق الحاوية على بنى تحتية مختلفة ، مثل المعدن أو السحابة أو الأجهزة الافتراضية ، دون الحاجة إلى إعادة كتابته.
كيف تعمل تقنية الحاوية؟
تعمل الحاوية عن طريق وضع جميع القطع التي يحتاجها التطبيق في وحدة افتراضية واحدة.
تسمح الحاوية للمطورين بتجميع كود التطبيق مع ملفات التكوين والتبعيات والمكتبات الخاصة به. افصل حزمة البرامج الفردية (الحاوية) عن نظام التشغيل المضيف. يتيح التغليف للحاوية الوقوف بمفردها وتصبح محمولة ، بحيث يمكن تشغيلها دون مشاكل على أي منصة أو سحاب. اعتبرها قطعة ليغو صغيرة من لوحة ليغو.
ومع ذلك ، لا تستخدم الحاويات موارد الأجهزة أو kernel المحاكية بشكل مباشر. لا تهتم الحاويات أو تقلق بشأن نظام التشغيل الذي يعمل على أجهزة افتراضية.
بدلاً من ذلك ، تعمل الحاويات "فوق" منصة مصممة خصيصًا للتعامل مع الحاويات وإخفاء الموارد الأساسية. تتفوق الحاويات على البدائل مثل الأجهزة الافتراضية والخوادم المعدنية من حيث السرعة والحجم لأنها لا تشكل سوى المكونات والاعتمادات الأكثر أهمية للتطبيق. كما أنها تمكن من تنفيذ نفس التطبيق في سياقات مختلفة دون التعامل مع المشكلات المرتبطة.
الحاوية مقابل الافتراضية
لا يعرف الأشخاص الذين ليسوا على دراية جيدة بدورة حياة التطبيق دائمًا الفرق بين الحاوية ، التي يصنعها برنامج مثل Docker ، والمحاكاة الافتراضية للخادم التقليدي (ما تمكّنه برامج Hypervisor مثل HyperV و VMware ESXi). ومع ذلك ، إليك ما يصنع الفرق:

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

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

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

قابلية النقل : يشتكي الأشخاص من أن التطبيق يعمل بشكل جيد في بيئة واحدة (على سبيل المثال ، التدريج) ولكن ليس في بيئة أخرى. إنها معضلة DevOps. عادة ، المشكلة هي اختلاف بيئي. ربما تم تحديث التبعية. يمكن تنفيذ نفس صور الحاوية ، بما في ذلك التبعيات ، في كل مكان باستخدام الحاويات.
سريع : تبدأ الحاويات بشكل أسرع من الأجهزة الافتراضية أو الخوادم المعدنية. يتم تشغيل الحاويات في ثوانٍ ، بينما تستغرق الأجهزة الافتراضية دقائق ، اعتمادًا على الموارد وحجم التطبيق.
كفاءة استخدام الموارد : تعتبر الحاويات أكثر كفاءة من الأجهزة الافتراضية لأنها لا تتضمن سوى ملفات خاصة بالتطبيق. الأجهزة الافتراضية هي جيجا بايت ، بينما الحاويات ميغا بايت. تسمح الحاويات للفرق باستخدام موارد الخادم بكفاءة.
بساطة النشر والتطوير : يمكن استخدام الحاويات المحمولة في أي مكان. التطبيقات ذات الحاويات سريعة وصغيرة وسهلة النشر.
تسمح الحاوية لفريقك ببناء نفس الصورة محليًا وفي الإنتاج. يمكن أن تقلل تطبيقات الحاويات من المواقف عندما يعمل شيء ما في موقع ما ولكن ليس في مكان آخر. تدعم خطوط أنابيب CI / CD بناء الحاويات. تعمل هذه الفوائد على تحسين إنتاجية الفريق.
استكشاف الأخطاء وإصلاحها : الحاوية تعزل وتفصل التطبيقات. لا يؤثر فشل إحدى الحاوية على وظائف الحاوية الأخرى. يمكن لفرق التطوير تحديد حاوية معيبة وإصلاحها دون التأثير على الآخرين. يمكن لمحرك الحاوية استخدام التحكم في الوصول SELinux للعثور على مشكلات الحاوية وعزلها.
الأمان : برامج الحاوية تمنع البرامج الضارة من إلحاق الضرر بالتطبيقات الأخرى أو النظام المضيف. تم تعيين أذونات الأمان المحددة لإيقاف المكونات غير المرغوب فيها من دخول الحاويات الأخرى أو تقييد الاتصالات.
قابلية الإدارة : أتمتة أعباء العمل والخدمات المعبأة في حاويات باستخدام منصة تنظيم الحاويات. يعمل تنسيق الحاوية على تبسيط الأعمال الإدارية الروتينية ، بما في ذلك إطلاق إصدارات جديدة من التطبيقات ، وتوسيع نطاق البرامج المعبأة في حاويات ، والمراقبة ، والتسجيل ، وتصحيح الأخطاء.
الاستمرارية : فشل حاوية واحدة لن يؤثر على الآخرين. يمكن للمطورين إصلاح حاوية واحدة دون التأثير على الآخرين. يضمن النقل بالحاويات استمرارية التشغيل.
استنتاج
الحاوية هو مفهوم حديث لتطوير البرمجيات سيصبح أكثر كفاءة بمرور الوقت. يعتقد مؤيدوها أنها تساعد المطورين على إنشاء ونشر البرامج والتطبيقات بسرعة وأمان أكبر.
مع نضوج النظم الإيكولوجية الخاصة بالحاويات وتنمو ، يتوقع المشاركون في الصناعة أن تنخفض الأسعار. ومع ذلك ، تم حل مشكلة التشغيل ، لكن الصيانة العامة مع العديد من البيئات الصغيرة تأخذ مقعدًا خلفيًا. الشيء المهم التالي للنقل بالحاويات هو التنسيق.
لن تتوقف التطبيقات الحديثة هنا. Kubernetes هو الشيء الكبير التالي في الحاويات والخدمات المصغرة. تسهل Kubernetes توسيع نطاق عمليات تثبيت الحاويات وإدارتها. تدير K8s عمليات نشر الحاويات الأكبر من Docker أو LXC. K8s هي أداة محبوبة لإدارة الحاويات.
الآن أصبحت هذه الحاوية شيئًا من الماضي ، التوصية العامة هي الانتقال إلى K8s.