متى تستخدم حاويات "Docker"

مكتمل

كما تعلمنا، لدى Docker العديد من الميزات التي يمكننا استخدامها. لنلقِ نظرة على الفوائد التي يوفرها "Docker" لفرق التطوير والعمليات لدينا. سنتطرق إلى عدد قليل من السيناريوهات التي قد لا يكون فيها "Docker" هو الخيار الأفضل.

ستساعدك هذه الجوانب على تحديد ما إذا كان "Docker" مناسبًا لاستراتيجية التعبئة في حاوية الخاصة بك.

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

  • إدارة بيئات الاستضافة الخاصة بنا بسهولة.
  • ضمان الاستمرارية في كيفية تقديم برنامجنا.
  • تأكد من أننا نستخدم أجهزة الخادم بكفاءة.
  • السماح بقابلية نقل تطبيقاتنا.

يُعد "Docker" حلاً لهذه التحديات. لنلقِ نظرة على جميع الفوائد التي قمنا بتغطيتها حتى الآن.

فوائد "Docker"

عندما نستخدم "Docker"، نحصل على الفور على مزايا عرض التعبئة في حاوية.

استخدام فعال للأجهزة

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

Diagram contrasting VM resource use versus Docker resource use.

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

عزل الحاوية

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

لنقارن هذه الميزة مقابل استخدام الأجهزة الظاهرية

Diagram that shows a physical host running multiple VMs.

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

إمكانية نقل التطبيق

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

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

تسليم الطلب

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

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

إدارة بيئات الاستضافة

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

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

عمليات النشر السحابية

حاويات Docker هي بنية الحاوية الافتراضية التي تستخدمها خدمات التعبئة في حاويات Azure، والعديد من الأنظمة الأساسية السحابية الأخرى تدعمها أيضا.

على سبيل المثال، يمكنك نشر حاويات Docker إلى Azure Container Instances وAzure App Service وAzure Kubernetes Services. يوفر لك كل خيار من هذه الخيارات ميزات وإمكانيات مختلفة.

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

متي لا يمكنك استخدام حاويات "Docker"؟

توفر حاويات Docker العديد من الفوائد، ولكن ضع في اعتبارك أن الحاويات قد لا تناسب جميع متطلباتك. هناك بعض الجوانب التي يجب أن نأخذها في الاعتبار.

الأمان والظاهرية

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

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

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

لن تستفيد جميع التطبيقات من التعبئة في حاوية. في مثل هذه الحالات، قد يكون من المنطقي استخدام جهاز ظاهري.

مراقبة الخدمة

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

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