ما الفرق بين Docker و Virtual Machine (VM)؟

جدول المحتويات:

ما الفرق بين Docker و Virtual Machine (VM)؟
ما الفرق بين Docker و Virtual Machine (VM)؟
Anonim

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

ما الذي يجعل Docker مفيدًا جدًا؟

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

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

توفر حاويات Docker العزل دون حمل الأجهزة الافتراضية
توفر حاويات Docker العزل دون حمل الأجهزة الافتراضية

يقدم Docker حلاً أفضل. توفر حاويات Docker العزل دون حمل الأجهزة الافتراضية. تعمل كل حاوية في بيئتها الخاصة ، مقسمة بمساحات أسماء Linux ، ولكن الجزء المهم هو أن الكود الموجود في الحاويات يعمل مباشرة على الجهاز. لا يوجد مضاهاة أو افتراضية متضمنة.

لا يزال هناك قدر ضئيل من النفقات بسبب الشبكات والتفاعل مع النظام المضيف ، ولكن التطبيقات في Docker تعمل بشكل عام بالقرب من السرعات العادية ، وبالتأكيد أسرع بكثير من متوسط VPS لديك.لست مضطرًا إلى تشغيل 8 نسخ من Ubuntu ، بل نسخة واحدة فقط ، مما يجعل تشغيل عدة حاويات Docker على مضيف واحد أمرًا رخيصًا. توفر خدمات مثل Elastic Container Service من AWS و Cloud Run من GCP طرقًا لتشغيل الحاويات الفردية دون توفير خادم أساسي.

تحزم الحاويات جميع التبعيات التي يحتاجها التطبيق لتشغيلها ، بما في ذلك المكتبات والثنائيات التي يستخدمها نظام التشغيل. يمكنك تشغيل حاوية CentOS على خادم Ubuntu ؛ كلاهما يستخدم Linux kernel ، والفرق الوحيد هو الثنائيات والمكتبات المضمنة لنظام التشغيل.

الاختلاف الرئيسي مع حاويات Docker هو أنك لن تتمتع عمومًا بوصول SSH إلى الحاوية. ومع ذلك ، فأنت لست بحاجة إليه بالضبط - فالتكوين يتم التعامل معه من خلال ملف الحاوية نفسه ، وإذا كنت تريد إجراء تحديثات ، فستحتاج إلى دفع إصدار جديد من الحاوية.

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

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

سلبيات عامل ميناء

بالطبع ، لن يستبدل Docker الأجهزة الافتراضية في أي وقت قريبًا. إنهما تقنيتان مختلفتان ، وما زالت الأجهزة الافتراضية بها الكثير من الجوانب الإيجابية.

الشبكات بشكل عام أكثر مشاركة. على جهاز افتراضي ، عادة ما يكون لديك أجهزة شبكة مخصصة معروضة لك مباشرة.يمكنك بسهولة تكوين جدران الحماية ، وتعيين التطبيقات للاستماع إلى منافذ معينة ، وتشغيل أحمال عمل معقدة مثل موازنة التحميل باستخدام HAProxy. على Docker ، نظرًا لأن جميع الحاويات تعمل على نفس المضيف ، فإن هذا غالبًا ما يكون أكثر تعقيدًا. على الرغم من ذلك ، عادةً ما توفر الخدمات الخاصة بالحاويات مثل Elastic Container Service من AWS و Cloud Run من GCP هذه الشبكة كجزء من خدمتهم.

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

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

موضوع شعبي