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

بينما تُستخدم كلمة "Emulation" بشكل شائع للإشارة إلى محاكاة ألعاب الفيديو ، إلا أنها تُستخدم في كثير من الأحيان لتطبيقات الأعمال. على سبيل المثال ، ربما لديك برنامج قديم مهم يجب أن يعمل على نظام مثل DOS. غالبًا ما يكون تشغيله في محاكي على خادم جديد أسهل من تشغيله على جهاز في ذلك الوقت. يمكن أن يشير أيضًا إلى جزء من البرنامج يحاكي تأثيرات الأجهزة القديمة ، مثل محاكاة وحدات تحكم الشبكة القديمة.
ومع ذلك ، يمكن أن تكون المحاكاة بطيئة دون داع. حالة الاستخدام الشائعة للغاية هي تشغيل العديد من أجهزة Linux الافتراضية على نظام تشغيل مضيف واحد. عندما يكون الجهاز المضيف هو نفسه الجهاز الظاهري ، فإن محاكاة وحدة المعالجة المركزية بالكامل تكون بطيئة جدًا مقارنة بتشغيلها بشكل طبيعي.
بدلاً من ذلك ، ستستخدم معظم الأجهزة الافتراضية تقنية المحاكاة الافتراضية المحسّنة للأجهزة. في Intel ، تسمى هذه التقنية Intel-VT ، وفي AMD تسمى AMD-V. كلاهما يحقق نفس الهدف المتمثل في جعل تطبيقات x86 افتراضية. إذا كنت تقوم بتشغيل جهاز كمبيوتر سطح المكتب ، فقد تضطر إلى تشغيلها في BIOS إذا لم يتم تمكينها افتراضيًا.
غالبًا ما يتم استخدام المحاكاة الافتراضية بالاشتراك مع Hypervisor ، وهو نظام تشغيل مجردة يتعامل مع عدة خوادم افتراضية خاصة. إذا كنت تستأجر خادمًا افتراضيًا VPS من شركة حوسبة سحابية مثل AWS ، فمن المحتمل أن يتم تشغيله على برنامج Hypervisor مثل Nitro أو Proxmox أو Hyper-V من AWS. يمكن أن تحقق برامج Hypervisor الحديثة أداءً قريبًا جدًا من الأداء الأصلي (ويسمى أيضًا "bare metal").في حين أن هناك دائمًا القليل من النفقات العامة ، إلا أنه أفضل من الاضطرار إلى محاكاته.

تعمل المحاكاة الافتراضية دائمًا بشكل أفضل إذا كنت تقوم بإضفاء الطابع الافتراضي على نفس البنية. على سبيل المثال ، ستكون وحدات المعالجة المركزية x86 من AMD و Intel قادرة على محاكاة أنظمة تشغيل x86 مثل أنظمة التشغيل Windows و Linux القياسية. في حين أنه ليس من المستحيل تقنيًا أن تقوم وحدة المعالجة المركزية ARM بإضفاء الطابع الافتراضي على وحدة المعالجة المركزية x86 ، إلا أنها ليست شيئًا بشكل عام.
قد تكون هذه مشكلة ، كما هو الحال في أجهزة Macbook الجديدة القائمة على ARM من Apple والتي تعمل على معالجات M1 الخاصة بها. المحاكاة الافتراضية لأنظمة التشغيل x86 غير مدعومة. بينما لا يزال بإمكانك تشغيل أنظمة تشغيل أخرى مع برامج مثل Parallels ، سيكون الأمر أبطأ كثيرًا لأنه سيتعين عليه اللجوء إلى المحاكاة.
إذن ، في الختام ، إذا كنت ستشغل برنامجًا من نظام تشغيل آخر ، فستحتاج إلى التأكد من قيامك بذلك باستخدام نوع من المحاكاة الافتراضية إذا كنت تريد تحقيق أي مكان قريب من 100٪ سرعة أصلية
كيف يقارن Docker؟

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

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

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