تختلف دوكر Docker عن كوبيرنيتيس Kubernetes من ناحية حالة الاستخدام ولكنهما تعملان معًا وبشكل متكامل في عمليات النشر المعقدة والواسعة النطاق.
يمكن بواسطة دوكر تطوير وشحن التطبيقات داخل الحاويات (المعروفة أيضًا باسم صور دوكر)، بينما يُعتبر كوبيرنيتيس تنسيق عالي المستوى high-level orchestration لمليارات من هذه الحاويات، ولفهم عملية التنسيق أكثر، انظر مقال الفرق بين التنسيق والأتمتة.
ستتضح في نهاية المقال الصورة الكبيرة للمنصتين وذلك بعد فهم الفكرة النظرية بالإضافة للتفاصيل العملية.
تعريف الحاويات containers
لتوضيح مزايا المنصتين من الأفضل التركيز على الأساس الذي تعتمد عليه وشرحه وهو الحاويات containers، يُستخدم مفهوم الحاويات في تطوير التطبيقات ونشرها، والحاوية عبارة عن مجموعة برمجية متكاملة unit of software تقوم بجمع التعليمات البرمجية وجميع الاعتماديات dependencies معًا بحيث يمكن تشغيل التطبيق بسرعة وموثوقية في أي بيئة حوسبة.
يمكن وصف الحاويات بأنها آلات افتراضية ذات حجم منخفض lightweight virtual machines، إذ تتطلب الآلات الافتراضية محاكاة نظام التشغيل بالإضافة إلى أي تطبيق برمجي يُراد تشغيله بشكل افتراضي، الأمر الذي يجعل من الآلات الافتراضية مُستهلِكًا شرهًا للموارد لذا تم تقديم الحاويات بواسطة نظام التشغيل لينكس لمعالجة هذه المشكلة.
يمكن فهم الأمر ببساطة عن طريق السيناريو الآتي: إذا كان لديك نظام تشغيل لينكس يعمل على حاسوبك، فلماذا لا تنشئ نظام تشغيل جديد لكل جهاز افتراضي يستخدم نظام التشغيل هذا؟ يمكنك بدلًا من ذلك استخدام نظام التشغيل الأساسي والذي يسمى النواة kernel لكل جهاز افتراضي وبذلك يمكن للأجهزة الافتراضية تشغيل البرامج المطلوبة فقط.
تساعد الحاويات فريق المطورين مهما كان عدده على حل مشكلات مثل الاتساق وقابلية التوسع والأمان. يمكن استخدام حاويات مثل دوكر لفصل التطبيق عن البنية التحتية الأساسية.
ما هو دوكر؟
يُستخدم دوكر من أجل فصل التطبيق عن البنية التحتية الأساسية، إذ يقوم بتجميع التعليمات البرمجية الخاصة بالتطبيق وجميع اعتمادياتها في كيان واحد قائم بذاته ومستقل يعمل على أي نظام مدعوم.
إلى جانب كونه النظام الأساسي الأكثر شيوعًا والمعيار الفعلي لصور الحاويات container images، فإن مزايا دوكر هي نفسها فوائد التجميع ضمن الحاويات containerization.
يتميز دوكر بأنه قابل للنقل وقابل للتطوير ويعتبر آمن لكونه معزول، وقد يكون هذا إعدادًا مختلفًا عن المُعتاد، مما يقودنا إلى بعض عيوب دوكر، إذ يعاني التجميع ضمن الحاويات من بعض العيوب، ويقول الرافضين لها أنها لا تعمل بهدوء وبطء كما يتم في بيئة مجردة bare metal والتي تُثبّت فيها الأجهزة الافتراضية مباشرةً على العتاد hardware بدلًا من تثبيتها في داخل نظام التشغيل المضيف مثل VMware و hypervisor، كما أنه لا يوفر تكامل جيد مع تطبيقات المنظومة.
بما أن الحاوية يمكن نقلها وتعديلها، هذا ما يؤدي إلى مشاكل في التخزين الدائم persistent storage، كما يصبح أداء بعض التطبيقات سيئًا مع الحاويات خاصة إذا كانت تطبيقات أحادية المستوى monolithic applications أي يتم فيه دمج واجهة المستخدم وكود الوصول إلى البيانات في برنامج واحد من منصة واحدة.
ما هو كوبيرنيتيس؟
كوبيرنيتيس هو المعيار الحالي في أنظمة تنظيم واتساق الحاويات orchestration الذي يسهّل عمليتي إدارة الحاويات ونشرها على نطاق واسع.
طورت Google هذه التقنية بناءً على سنوات من الخبرة في مجال إنتاج الحاويات، ويزود كوبيرنيتيس المستخدم بصندوق أدوات toolbox يعمل على أتمتة عملية توسيع نطاق التطبيقات وأتمتة عملية تشغيل التطبيقات الموجودة في الحاويات في بيئة الإنتاج.
يتميز كوبيرنيتيس بما يلي:
- توزيع الحمل
- التحزيم الآلي
- أنظمة ذاتية لمعالجة الأخطاء
- تعمل بكفاءة مع منهجيات التكامل المستمر والتوزيع المستمر CI/CD
- تنسيق متطور لعمليات النشر المعقدة
يعاني كوبيرنيتيس من بعض العيوب، وهي المعاكس لجميع المزايا المذكورة أعلاه:
- يمكن أن يكون حلًا مبالغًا به لكثير من الحالات باستثناء التطبيقات المعقدة وكبيرة الحجم
- يمكن أن يعاني من بطء خلال التنفيذ ويحتاج إلى وقت لتعلمه
- التنسيق المتطور الذي يتميز به يضفي تعقيدًا إضافيًا على المشروع
الفرق بين كوبيرنيتيس ودوكر
كما هو مشار إليه في بداية هذا المقال، فإن الفرق بين كوبيرنيتيس ودوكر واسع جدًا، وعندما يذكر أحد ما دوكر فإنه يشير عادةً إلى دوكر كومبوز Docker Compose الذي يُعتبر منتج دوكر الأساسي الذي يسمح للمستخدم بإنشاء تطبيقات فردية خاصة في حاويات. أصبح دوكر كومبوز هو المعيار لذلك يقوم الجميع بذكر مصطلح "دوكر" فقط وذلك للاختزال.
أما كوبيرنيتيس فهو نظام تنسيق يمكن بواسطته التحكم في جميع موارد الحاوية الخاصة بالمستخدم من مستوى إدارة واحد، أنشأته غوغل Google في الأصل للمراقبة والتحكم في عدد كبير (مثل المليارات) من الحاويات وهو الآن مفتوح المصدر.
قد تتساءل أيهما نختار: كوبيرنيتيس أم دوكر كومبوز؟
عندما يبحث المطور ليقرر أيهما يستخدم وبعد الاطلاع على مزايا وعيوب كل منهما يمكن طرح السؤال: "لماذا لا يكون كلاهما؟" باستخدامهما معًا، سيتمكن المطور من عزل التطبيقات كنظم حاويات وتنظيم أعداد ضخمة منها بطريقة آمنة وموثوقة.
الفرق بين كوبيرنيتيس ودوكر سوارم Docker Swarm
دوكر سوارم Docker Swarm هو نظام تنسيق حاوية دوكر، لذا فإن مقارنته بنظام كوبيرنيتيس واقعية أكثر من مقارنة كوبيرنيتيس بمنتج دوكر كومبوز.
يعتبر Docker Swarm نظام تناسق أبسط وأصغر حجمًا من كوبيرنيتيس، لكنه يفتقر إلى نقاط القوة التي يتمتع بها كوبيرنيتيس في الأتمتة ومعالجة الأخطاء ذاتيًا وهي ميزات يمكن أن تكون مهمة لعمليات النشر الضخمة.
مصادر للتعرف على كوبيرنيتيس و دوكر والخدمات المصغرة
إليك قائمة مقالات عربية ننصحك بالإطلاع عليها للتوسع والاستزادة:
- أبرز المفاهيم التي يجب عليك الإلمام بها عن الحاويات: يوضح هذا المقال المفاهيم التي عليك أن تعرفها عن الحاويات بالتفصيل.
- مدخل إلى Kubernetes: يعرّف هذا المقال منصَّة كوبيرنيتيس، ويتناول ثلاث نقاط مهمة وهي: تعريف كوبيرنيتيس، كائنات كوبيرنيتيس، مرحبا Miniku.
- تعرف على Docker: هذا المقال مدخل تعريفي لماهية Docker وأهميته.
- نظرة عامّة على إعداد الحاويّات containerization على Docker
- ما هي صورة الحاوية container image؟: يشرح المقال مفهوم صورة الحاوية container image الذي يحتوي على تطبيق جاهز packaged application إضافةً إلى اعتمادياته dependencies ومعلومات حول الخدمات التي تشغله عند إقلاعها وكل ما يتعلق به.
- نظام كوبيرنتس Kubernetes وكيفية عمله: يشرح المقال Kubernetes وهو حل مفتوح المصدر لأتمتة النشر والتوسع الديناميكي للتطبيقات المغلفة في حاويات عبر الإنترنت، ويبين كيفية عمله، كما أنه يوضح الفرق بين OpenShift وOKD.
إن أردت القائمة الكاملة، فانظر قسم الحوسبة السّحابية وقسم دوكر في أكاديمية حسوب.
بعض الأسئلة الشائعة
هل يمكن استخدام كوبيرنيتيس من دون دوكر؟
من الناحية التقنية نعم يمكن استخدام كوبيرنيتيس من دون دوكر طالما يتوفر نوع آخر من الحاويات. هناك خياران هما containerd و Podman، ولكن تعتبر دوكر أكثر منصات الحاويات شيوعًا.
هل كوبيرنيتيس مجاني؟
نعم إنه مجاني إذا استُخدم الإصدار المفتوح المصدر بالكامل المتاح في مستودع GitHub الخاص به، وقد يفضل الكثير من المستخدمين استخدام عروض كوبيرنيتيس المجمعة التي تشمل الخدمات والمكتبات والأنظمة الأساسية والمنصات الأخرى وما إلى ذلك في عروض السحابة الكبيرة، حتى أن البعض لديه عروض مُدارة بالكامل وتكون مفيدة ولكنها أكثر تكلفة.
هل يجب تعلم دوكر أم كوبيرنيتيس أولا؟
من الجيد البدء بالجزء الأصغر من النظام: الحاوية دوكر كومبوز ثم الانتقال إلى نظام التنسيق كوبيرنيتيس، ولكن يمكن تعلّم كليهما في نفس الوقت.
هل مفهوم الحاويات قديم؟
ليس بعد، إذ لا تزال الحاويات ذات قيمة للبنى القائمة على الخدمات المصغرة microservices على الرغم من أنها كانت موجودة بشكل أساسي مع وجود الأجهزة الافتراضية. يعتقد البعض أنه سيتم استبدال الحاويات بحلول خفية الخوادم serverless أو بدون شيفرة برمجية ولكن هذه الحالات تميل إلى حل مشاكل مغايرة على مستويات مختلفة.
ترجمة -وبتصرف- للمقال Kubernetes vs. Docker: Differences and Use Cases من فريق Cloud Academy
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.