چکیده
داکر برای توسعه دهندگان و مدیران برخی امکانات را ارائه می دهد، که بسیار مفید است. داکر یک پلتفرم منبع باز است که می تواند برای ساخت، توزیع ، اجرای برنامه ها در یک ابزار حمل و نقل سبک و بسته بندی کار آمد باشد ، که این امور را موتور داکر برای ما انجام می دهد. همچنین داکر هاب را ارائه می دهد که یک سرویس ابری برای اشتراک برنامه ها است. با جایگزینی ماشین سنتی مجازی با کانتینر های داکر می توان به طور عالی هزینه های ساخت مجدد سیستم عامل توسعه ابر را کاهش داد.
1. مقدمه
داکر یک پلتفرم منبع باز است که برنامه ها را اجرا می کند و روند توسعه و توزیع را آسان می کند. برنامه هایی که در آنها داکر تعبیه شده است، با پشتیبانی از تمام وابستگی های آن به یک فرم استاندارد به نام کانتینر (container) بسته بندی می شوند. این کانتینرها به صورت جداگانه در بالای هسته سیستم عامل در حال اجرا هستند. تکنولوژیهای کانتینر بیش از ۱۰ سال است که وجود دارند، اما داکر طور کلی یک امید جدید است که در حال حاضر در میان بهترین نوآوریها به چشم میخورد، زیرا با ظرفیتهای جدیدی همراه است که تکنولوژیهای قبلی نداشته اند. روش کار با داکر به این شکل می باشد که در ابتدا به برنامه امکان ایجاد و کنترل کانتینرها را میدهد که به راحتی توسعه دهنده می تواند وابستگی های برنامه خود را در کانتینر بستهبندی کند. این برنامههای مجازی شده به راحتی میتوانند در هر جایی بدون هیچ تغییری کار کنند. علاوه بر این، داکر میتواند موقعیتهای مجازی بیشتری نسبت به نوآوریهای مختلف را بر روی تجهیزات یکسان(از نظر سخت افزار) منتقل کند. برای اتمام کار، داکر میتواند به راحتی با ابزارهای شخص ثالث هماهنگ شود که به استقرار و مدیریت آسان کانتینرهای داکر کمک میکند که به این معنی می باشد در سیستم های دیگر با هر سخت افزار و نرم افزار می تواند بدون هیچ مشکلی اجرا شود.
2. داکر
داکر امکان خودکار کردن برنامهها را زمانی که در کانتینرها مستقر میشوند فراهم میکند و در یک محیط نگهدارنده که در آن برنامهها مجازی شده و اجرا میشوند و داکر یک لایه اضافی از موتور استقرار را در بالای آن اضافه میکند. روش طراحی داکر ایجاد محیطی سریع و سبک است که در آن کد میتواند به طور موثر اجرا شود وعلاوه بر این یک امکان اضافی برای فرآیند کار ماهرانه فراهم می کند تا کد را برای آزمایش قبل از تولید آماده کند.راسل (۲۰۱۵)تایید میکند که تا جایی که امکان دارد، داکر به شما این اجازه را میدهد که کد خود را آزمایش کرده و آن را در محیط تولید قرار دهید. تورنوبول (۲۰۱۴)با گفتن اینکه داکر به طور شگفت آوری ساده است نتیجهگیری میکند.
3. درون داکر
چهار جز اصلی درون داکر وجود دارد، Client and Server، Docker Images، Docker Registries، و Docker Containers.که این اجزا به طور مفصل در بخشهای بعدی توضیح داده خواهند شد.
3.1 Docker Client and Server
همانطور که در شکل ۱ نشانداده شدهاست، داکر را می توان به عنوان یک کاربر و برنامه کاربردی مبتنی بر سرور توضیح داد. سرور داکر(Docker daemon) درخواست را از کلاینت دریافت کرده و سپس آن را براساس درخواست مورد نظر پردازش میکند. بعد از پردازش یک API به همراه یک خط فرمان دودویی از طرف داکر برای کاربر ارسال می شود که آنAPI واسط بین کاربر و سرور داکر می باشد و با استفاده از خط فرمان
دستورات خود را ارسال می کند. با استفاده از همین منطق شما می توانید یک سرور و کلاینت داکر را روی یک
ماشین اجرا کرد یا یک کلاینت داکر محلی را می توان به یک سرور دوردست متصل کرد، که روی ماشین دیگری اجرا میشود.
۳.۲ Docker Images
دو روش برای ساخت یک ایمیج وجود دارد. اولین مورد ایجاد یک ایمیج با استفاده از یک الگوی فقط خواندن است. پایه و اساس هر ایمیج یک ایمیج پایه است. ایمیج های سیستمعامل اساسا ایمیج ها پایه هستند، مانند اوبونتو ۱۴.۰۴ LTS، یا فدورا ۲۰. ایمیج های سیستمعامل یک کانتینر با قابلیت اجرای کامل سیستمعامل ایجاد میکنند.برنامههای مورد نیاز را می توان با اصلاح آن به ایمیج پایه اضافه کرد، اما لازم است که یک ایمیج جدید ایجاد شود. فرآیند ایجاد یک ایمیج جدید "انجام یک تغییر" نامیده میشود. روش دوم ایجاد یک فایل داکر است. فایل داکر شامل فهرستی از دستورالعملها در هنگام اجرای فرمان "ساخت داکر" از خط فرمان پایه است که تمام دستورالعملهای دادهشده در پرونده داکر را دنبال میکند و ایمیجی میسازد. این یک روش خودکار برای ساختن یک ایمیج است.
۳. ۳ Docker Registries
ایمیج های داکر در رجیستری داکر قرار داده میشوند. به همان نسبت برای منابع کد که در آن تصاویر را میتوان از یک منبع واحد بیرون کشید یا هل داد. دو نوع رجیستر وجود دارد، دولتی و خصوصی. داکر هاب یک رجیستر عمومی نامیده می شود که در آن همه میتوانند ایمیج های موجود را دریافت کنند و ایمیج های خود را بدون ایجاد ایمیجی از صفر به نمایش بگذارند. ایمیج ها را می توان با استفاده از ویژگی داکر هاب در یک منطقه خاص (عمومی یا خصوصی)توزیع کرد.
۴. ۳ Container
ایمیج داکر یک کانتینر داکر ایجاد میکند. کانتینرها تمام کیت مورد نیاز برای یک برنامه را نگه میدارند، بنابراین برنامه میتواند به روشی مجزا اجرا شود. به عنوان مثال، فرض کنید که ایمیجی از سیستمعامل اوبونتو با SQL سرور وجود دارد، زمانی که این ایمیج با دستور داکر اجرا میشود، سپس یک کانتینر ساخته خواهد شد و SQL سرور بر روی سیستمعامل اوبونتو اجرا خواهد شد
۴. Docker vs Virtual Machine
مجازی سازی یک مفهوم قدیمی است، که در محاسبات ابری مورد استفاده قرار گرفته می گرفت، تا اینکه IaaS به عنوان یک تکنیک مهم برای ساختار سیستم، تامین منابع، و پذیرفته شد. منابع مجازی نقش اصلی را در حل مشکلات با استفاده از تکنیک هستهای محاسبات ابری ایفا میکنند. شکل ۲ معماری ماشین مجازی را نشان میدهد.
هایپروایزر بین سیستمهای عامل میزبان و مهمان قرار دارد. این یک پلتفرم مجازی است و بیش از یک سیستمعامل را در سرور کنترل میکند. بین سیستمعامل و سی پی یو کار میکند. مجازی سازی آن را به دو بخش تقسیم میکند: بخش اول مجازی سازی نیمه و بخش دوم مجازی سازی کامل. شکل ۳ معماری کانتینرهای داکر را نشان میدهد. کانتینرهای لینوکس توسط ابزار داکر مدیریت میشوند و از آن به عنوان روشی برای مجازی سازی سطح سیستمعامل استفاده میشود. شکل ۳ نشان میدهد که در یک میزبان کنترل منفرد، تعداد زیادی کانتینر
لینوکس وجود دارد که ایزوله شدهاند. منابعی مانند شبکه، حافظه، سی پی یو، و بلوک I / O توسط هسته لینوکس تخصیص داده میشوند و همچنین بدون راه اندازی ماشین مجازی سازی با گروههای cgroup سر و کار دارند. طبق نظر والدسپورگر (۲۰۰۲)، در کانتینرهای لینوکس، یک معماری مدیریت CPU و توزیع تخصصیتر منابع آن می باشد . در هر نمونه از Hyper - V یا VMWare، هزینه های زیادی ایجاد می شود و همچنین اجرای بیش از ده ماشین مجازی امکان پذیر نیست. کانتینرها تا
حد زیادی این مسئله را حل کرده اند. کانتینرها فقط از منابعی که برای خدمات یا برنامه ها مورد نیازاست استفاده می کند. بنابراین، در یک ماشین پیکربندی ضعیف، بالای ۵۰ درخواست از کانتینرها میتواند اجرا شود. برای مثال، فرض کنید یک سازمان خدمات امنیتی ایمیل ارائه میکند. وظیفه اصلی این سرویس ها بررسی ایمیل ها از نظر ویروس ، هرزنامه و بدافزار است. علاوه بر این، اگر محصول در ابر نصب شود، مدیریت انتقال پیام به عامل ،گزارش خرابی و تحویل را گزارش کند عمدتاً در این موارد استفاده ای از وابستگی های مرتبط یا کتابخانه های سطح سیستم عامل یا لایه برداری داده های هسته وجود ندارد. بنابراین، بهتر است که به جای داشتن ماشینهای مجازی، هر جز را با استفاده از sandboxing , OpenVZ یا داکر، با استفاده از آن پر کنیم. در بسیاری از شرکتها، ماشینهای مجازی برای انجام تست ِالمان به کار میروند. در این فرآیند، منابع CPU و فضای حافظه زیادی مصرف میشوند. در حالی که فنآوری کانتینر برای کاربران آنها تضمین میکند که افزایش حجم کاری بر بهرهوری منابع تاثیر نخواهد گذاشت. کانتینر در مقایسه با ماشینهای مجازی زمان کمتری را برای نصب صرف میکند، بنابراین سازگاری کانتینرها بسیار بیشتر از VM ها است. علاوه بر این، هم داکر و هم OpenVZ از نظر جنبههای امنیتی مورد بررسی قرار گرفتهاند. هنگامی که ایزوله سازی کاهش مییابد، به طور مستقیم بر امنیت تاثیر میگذارد که باعث کاهش سرعت آن می شود. کاربران ریشه لینوکس میتوانند به راحتی به کانتینرها دسترسی پیدا کنند چون کانتینرها نیز از همان هسته و سیستمعامل استفاده میکنند. ایزوله سازی داکر به اندازه یک ماشین مجازی قوی نیست، اگر چه داکر برنامه ای را که در کانتینر داکر اجرا می شود از میزبان اصلی جدا می کند. به علاوه ممکناست برخی از برنامه ها نتوانند در یک فناوری کانتینردار اجرا شوند و باید آنها را در سیستم عامل دیگری اجرا کنیم.
5.مزیت های کانتینرهای داکر
تقاضا و پیشرفت کانتینرهای لینوکس را می توان در چند سال اخیر مشاهده کرد. به دلیل مزایای ارایهشده توسط کانتینرها، داکر به سرعت محبوب شدهاست. مزایای اصلی داکر عبارتند از: سرعت، قابلیت حمل، مقیاس پذیری، تحویل سریع و تراکم.
۵.۱ سرعت
سرعت یکی از مهمترین مزایای داکر است. زمانی فواید استفاده از داکر مشخص میشود، که در مکالمه های خود در مورد سرعت داکر صحبت نکنید. (Chavis & Architect, 2015). زمان مورد نیاز برای ساخت یک کانتینر بسیار سریع است چون آنها واقعا کوچک هستند. توسعه، آزمایش و استقرار را می توان سریعتر انجام داد چون کانتینرها کوچک هستند. کانتینرها را می توان برای آزمایش پس از ساخت و برای آماده سازی به محیط تولید استفاده کرد
۵.۲ قابلیت حمل ونقل
آن برنامه هایی که در داخل کانتینرهای داکر ساخته میشوند قابلحمل هستند. این برنامههای کاربردی قابلحمل را می توان به راحتی به عنوان یک عنصر واحد حرکت داد و عملکرد مشابه باقی میماند
۵.۳ مقیاس پذیری
داکر دارای این توانایی است که میتواند در چندین سرور فیزیکی، سرورهای داده و پلتفرمهای ابری مستقر شود. همچنین میتواند در هر ماشین لینوکس اجرا شود. کانتینرها میتوانند به راحتی از یک محیط ابری به میزبان محلی و از آنجا دوباره به سرعت به ابر حرکت کنند. این مقیاس را می توان به سادگی با توجه به نیاز کاربر تنظیم کرد
۵.۴ تحویل سریع
قالب کانتیرهای داکر استاندارد شدهاست بنابراین برنامه نویسان مجبور نیستند بر وظایف یکدیگر تاکید کنند. وطیفه مدیر استقرار و نگهداری سرور با کانتینرها است، در حالی که مسئولیت برنامهنویس، مراقبت از برنامههای کاربردی در داخل کانتینر های داکر است. کانتینرها میتوانند در هر محیطی کار کنند زیرا همه وابستگیهای مورد نیاز داخل برنامهها را دارند و همه آنها آزمایش شدهاند . داکر محیطی قابلاعتماد، سازگار و بهبود یافته فراهم میکند،
۵.۵ چگالی
داکر از منابعی استفاده میکند که با کارایی بیشتری در دسترس هستند زیرا از هایپروایزر استفاده نمیکند. به همین دلیل است که میتوان کانتینرهای بیشتری را در یک میزبان واحد در مقایسه با ماشینهای مجازی اجرا کرد. عملکرد کانتینرهای داکر به دلیل چگالی بالاتر و عدم اتلاف منابع بیشتر است.
۶. معایب کانتینر های داکر
معایبی در کانتینر داکر وجود دارد که در زیر ذکر شده اند:
· مجازی سازی کامل توسط یک داکر ارایه نمیشود زیرا به هسته لینوکس وابستگی دارد که توسط میزبان محلی ارائه می شود.
· در حال حاضر، داکر بر روی ماشینهای قدیمیتر اجرا نمی شود.. این سیستم تنها از ماشینهای محلی ۶۴ بیتی پشتیبانی میکند.
· محیط مجازی شده کامل باید توسط کانتینر داکر برای ماشینهای ویندوز و مک فراهم شود. حتی اگر ابزار boot2 docker این خلاء را پر کند ، اما هنوز هم باید بررسی شود که آیا مانع پذیرش توسط کاربران این سیستمها میشود یا ادغام و عملکرد با سیستمعامل ماشین محلی میزبان کافی می باشد.
· لازم است احتمال مسائل امنیتی مورد ارزیابی قرار گیرد. با پشتیبانی دیجیتالی از ایمیج های داکر برای آینده، آسان ترین راه برای ایجاد باینری های قابل اعتمادمی باشد.
· یک نگرانی مهم این است که بررسی کنیم آیا جامعه آموزشی یا محقق علمی به طور قابلتوجهی به پذیرش داکر فکر خواهد کرد یا خیر.
۷. عملکرد داکر
سِئو و همکارانش ( ۲۰۱۴ ) با دو سرور با پیکربندی یکسان در محیط ابری استفاده کردند. یک سرور برای داکر و دیگری برای پلت فرم پشته باز برای KVM با استفاده از یک ابزار مجازی سازی استفاده شد .. به گفته وی، یک VM مستقل است ،این فاکتور باعث می شود سیاست شبکه ، امنیت ، کاربر و سیستم به راحتی قابل استفاده و مدیریت باشد . با این حال داکر حاوی سیستم عامل مهمان نیست . بنابراین، توزیع و جمع آوری ایمِیج ها به زمان بسیار کمی نیاز دارد. زمان بوت شدن نیز بسیار کوتاه است. اینها مزایای اصلی استفاده ازDocker Cloud در مقایسه با VM Cloud است. Scheepers (2014) فناوری های مجازی سازی LXC و Xen را برای محک زدن برخی از برنامه ها مقایسه می کند و توضیح می دهد کهXen به معنای توزیع مساوی منابع، گزینه بهتری خواهد بود و عملکرد آن به سایر کارها وابسته نیست و بر روی همان دستگاه اجرا می شود. با این حال، LXC به معنای بدست آوردن بیشتر منابع سخت افزاری یا اجرای فرایندهای جدا شده کوچکتر، بسیار بهتر است و همچنین در ابرهای خصوصی و نقطه ای، LXC گزینه بهتری می باشد. فلتر و همکاران (2014) عملکرد سه محیط مختلف Native، داکر و KVM را ارزیابی می کند وی تصریح کرد که کانتینرها و ماشین های مجازی هر دو نوآوری بالغی هستند که از 10 سال گذشته تجهیزات اضافی و پیشرفت برنامه نویسی سود برده اند. طبق این تحقیق، داکر برابر است با اجرای KVM برای هر موقعیتی که قبلا آزمایش کردند. نتایج آنها نشان می دهد که هر دوKVM و داکر هزینه بی ربطی برای پردازنده و اجرای حافظه دارند. همچنین نشان داده شده است که عملکرد کلی داکر بهتر ازLocal Host است، زیرا برنامه ها سریعتر ازLocal Host اجرا و پاسخ داده می شوند. علاوه بر این، از منابع سخت افزاری کمتری برای انجام وظایف در کانتینر داکر استفاده شده است. از آنجا که کاربران و توسعه دهندگان اطلاعات بیشتری در مورد داکر و قابلیت های آن می دانند آنها خواستار جایگزینی فناوری مجازی سازی سنتی با فناوری داکر هستند. داکر بسیاری از ویژگی های ساده و مفید را فراهم می کند. برای دستیابی به بهترین عملکرد و نتیجه ، توصیه می شود از تنظیمات پیش فرض بالاتر روید . کانتینرها تراکم پیشرفته ، عملکرد بهتر ، مقیاس پذیری و قابلیت استفاده بیشتری را در مقایسه با مجازی سازی سنتی ارائه می دهند زیرا کانتینرها از منابع هوشمندانه استفاده می کنند ، که این امر باعث کاهش هزینه های غیرضروری می شود. عملکرد کانتینرها بهتر از ماشین مجازی است زیرا کانتینر زمان راه اندازی کمتری می گیرد . داکر بزرگترین مسئله "وابستگی" را برطرف کرده است.اکنون کانتینرها تمام وابستگی های لازم را دارند که به ساخت صحیح کانتینر و اجرای آن ها در هر محیط داکر کمک می کنند. کانتینر یک لایه جداسازی اضافی را فراهم می کند که باعث افزایش امنیت کانتینر می شود. داکر به اندازه ای که مردم فکر می کنند ناامن نیست اما از یک حفاظت کامل برخوردار است.
8. داکر در مقابل سایر فناوری های کانتینر
در این بخش عملکرد مجازی سازی برنامه و عملکرد کانتینر داکر مورد بحث قرار می گیرد و ارزیابی سایر فناوری های کانتینرسازی مقایسه و بررسی می شود . سئو و همکاران ( ۲۰۱۴ ) به طور خلاصه؛ در سیستم عامل کلَود در داکر هیچ مهمانی وجود ندارد . بنابراین ذخیره سازی و هدر رفتن منابع کمتر است. زمان راه اندازی سریع و زمان تولید ایمیج ها کوتاه می باشد.
اینها مزایای ابر داکر در مقایسه با ابر ماشین مجازی است. آنها از دو سرور مشابه با پیکربندی یکسان در محیط ابر استفاده کردند.یک سرور برای داکر و دیگری برای پلتفرم Open Stack برای KVM با استفاده از یک ابزار مجازی سازی استفاده شد. سرور اوبونتو به عنوان یک بستر پایه مورد استفاده قرار می گیرد. برای محاسبه تقریبی زمان راه اندازی ، 20 تصویر در هر سرور تولید شد و زمان راه اندازی آنها مورد بررسی قرار گرفت. شکل 4 نشان می دهد که زمان راه اندازی شدن داکر کمتر از زمان راه اندازی شدن KVM است. داکر از سیستم عامل میزبان استفاده می کند، در حالی که KVM از سیستم عامل مهمان استفاده می کند. بنابراین، زمان راه اندازی شدن داکر کوتاه تر از زمان راه اندازی شدن KVM است. برای محاسبه سرعت عملیاتی، از زبان پایتون استفاده شد. شکل 5 نشان می دهد که سرعت عمل 100000 به طور متوسط در حدود 4.5s است
. برای اندازه گیری سرعت عملیات ، آن ها همین فرآیند مشابه را در ماشین مجازی سازی و داکر ۱۰۰ بار تکرار کردند تا میانگین زمان پردازش و انحراف استاندارد را به دست آورند. سئو و همکارانش( ۲۰۱۴) به این Vm شکل ۵ نشان می دهد که سرعت محاسبه داکر کمی سریع تر از سرعت محاسبات به طور مستقل کار می کند. این یکی از دلایلی است که به راحتی می توان سیاست شبکه، امنیت، کاربر و سیستم را
اعمال و مدیریت کرد. با این حال، داکر حاوی سیستم عامل مهمان نیست. بنابراین، توزیع و جمع آوری تصاویر به زمان بسیار کمتری نیاز دارد. زمان بوت شدن آن نیز بسیار کوتاه است. اینها مزایای اصلی استفاده از cloud docker در مقایسه با VM Cloud است. Scheepers (2014) فناوری های مجازی سازی LXC و Xen را برای محک زدن برخی برنامه ها مقایسه می کند برای این منظور، Scheepers از دو سرور
Core OS 324.3.0 و Xen Server 6.2 با نسخه
docker 0.11.1 استفاده می کند. پیکربندی این سیستم ها RAM 4 GB، CPU Intel Xeon Quad core و پشتیبانی مجازی سازی Intel VTX است. سیستم عامل پایه اوبونتو 12.04 است و کانتینرها روی هر دو دستگاه کار خواهند کرد. 2 گیگابایت حافظه به اولین ماشین مجازی و Apache 2.2، WordPress 3.9 و PHP5.3. این به عنوان یک سرور برنامه استفاده شد. 1 گیگابایت حافظه توسط ماشین مجازی دوم با پایگاه داده MYSQL 5.5 استفاده مشود که این پایگاه داده با مطالب نمونه وردپرس پر شده است. این دستگاه به عنوان سرور پایگاه داده مورد استفاده قرار گرفت و همچنین JMeter به عنوان ابزاری برای ارزیابی استفاده شد. شکل 6 نشان می دهد که LXC در هنگام اجرای درخواست SELECT، هزینه کمتری نسبت به Xen تجربه کرده است
. تمرکز بر اجرای این فرآیند معیار مشاهده استفاده از CPU و عملکرد سرعت شبکه است زیرا اینها منابع اصلی مصرف شده در این آزمایش هستند. شکل 7 نشان می دهد که در هنگام راه اندازی پرسش Xen، 16 ثانیه طول کشید تا پرس و جو INSERT در پایگاه داده اجرا شود، در حالی که در تنظیمات LXC مدت زمان آن بیشتر بود - حدود 335 ثانیه. این نشان دهنده عدم توانایی کانتینر LXC در جداسازی موثر منابع است.
فلتر و همکاران (2014) عملکرد سه محیط مختلف را ارزیابی کرد، Native، Docker و KVM [3]. مسائل هزینه نیز در تحقیقات خود برجسته شده است. سناریوها در جایی مورد بررسی قرار گرفتند که بیش از یک منبع سخت افزاری به طور کامل استفاده شده باشد. برای انجام آزمایشات، آنها از یک سرور IBM x3650 M4، 16 پردازنده اصلی Xeon E5 2665، دو Intel Sandy Bridge EP 2.4 3.0 گیگاهرتز و 256 گیگابایت RAM استفاده کردند.
برای دستیابی به یک حافظه غیر یکنواخت، دو پردازنده با پیوند QPI بهم متصل کردند.سیستم عامل پایه اوبونتو 13.10، docker نسخه 1.0، لینوکس هسته 3.11.0، libvir t نسخه 1.1.1 و QEMU 1.5.0 بود. این شکل 8 نشان می دهد که با اندازه گیری عملکرد خواندن و نوشتن پی در پی، از اندازه متوسط 1 MB برای I / O، کمی بیش از 60 ثانیه استفاده شده است. در این حالت، هزینه خفیف توسط داکر و KVM قابل مشاهده است. در موارد دیگر، KVM تقریباً چهار برابر اختلاف عملکرد دارد.
شکل 9 اجرای نامنظم خواندن، نوشتن و مخلوط را با استفاده از اندازه 4 کیلوبایت مربع و همزمان بودن را 128 نشان می دهد، که به طور آزمایشی تصمیم گرفتیم بیشترین اجرا را برای این SSD داشته باشیم. همانطور که انتظار داشتیم، داکر هیچگونه تضاد بالقوه به ندارد ولی با این حال، KVM فقط IOPS را به همان اندازه منتقل می کند، زیرا هر عملیات I / O باید QEMU را تجربه کند.
برای نتیجه گیری از این کارهای گذشته، صرف نظر از استفاده از تکنیک های متمایز و داشتن مراکز متنوع، یک چیز مشترک است که اندازه گیری و مقایسه عملکرد برنامه ها و انواع مختلف فناوری کانتینر و مجازی است.
جدول زیر ویژگی های مختلف فناوری های کانتینر و ماشین مجازی را مقایسه می کند. مجازی از یک لایه اضافی بین سیستم عامل میزبان و سیستم عامل مهمان استفاده می کند. این لایه به هایپروایزر معروف است. در حالی که داکر یک لایه اضافی بین سیستم عامل های میزبان و جایی که برنامه ها مجازی و اجرا می شوند اضافه می کند، که به عنوان موتور داکر شناخته می شود. چون داکر از هیچ سیستم عامل مهمان استفاده نمی کند تفاوت زیادی در عملکرد بین کانتینر داکر و فناوری ماشین مجازی ایجاد می کند . در جدول ۱ عملکرد برنامه های در حالا جرا در کانتینرها و ماشین مجازی های مختلف نیز به طور خلاصه مقایسه شده است.
همانطور که در جدول بالا آورده شده است، به گفته Seo و همکاران. (2014) از نظر زمان راه اندازی و سرعت محاسبه، عملکردdocker از KVM بهتر است، در حالی که Felter و همکاران. (2014) ثابت می کند که هیچ تفاوتی در اتلاف منابع (سربار) بین Docker و KVM وجود ندارد اما تفاوت قابل توجهی در اجرا وجود دارد، زیراKVM سریعتر از Docker است Scheepers (2014) دریافت که LXC برای انجام کارها زمان بیشتری می برد، در حالی که Xen Server کمتر زمان می برد