مقایسه سرور مجازی و داکر
معماری داکــر (Docker) و مقایسه آن با سرور مجازی
- Size یا اندازه: مقایسه سرور مجازی و کانتینر داکر در استفاده از منابع
- Startup یا زمان بوت شدن: مقایسه زمان بوت شدن سرور مجازی و کانتینر داکر
- Integration یا ادغام پذیری: مقایسه توانایی در ادغام شدن با ابزارهای دیگر
سایز و اندازه:
در این تصاویر چگونگی استفاده از منابع اختصاص داده شده به سرور مجازی و کانتینر داکر مشخص است.
در تصویر روبرو، یک سرور با 16 گیگابایت حافظه (Ram) در اختیار داریم و میبایست 3 سرور مجازی با آن اجرا کنیم. با توجه به فضای حافظه مورد نیاز بین 3 سرور مجازی بصورت ذکر شده تقسیم میشود.
- سرور مجازی 1: 6GB Ram
- سرور مجازی 2: 4GB Ram
- سرور مجازی 3: 6GB Ram
در این حالت در صورتی که فضای حافظه نیز استفاده نشده باشد، حافظه خالی غیر قابل استفاده میباشد.
- سرور مجازی 1، شامل 4 گیگابایت مصرف شده و 2 گیگابایت مصرف نشده
- سرور مجازی 2، شامل 3 گیگابایت مصرف شده و 1 گیگابایت مصرف نشده
- سرور مجازی 3، شامل 2 گیگابایت مصرف شده و 4 گیگابایت مصرف نشده
این حالت پیش آمده به دلیل این است که فضای اختصاص داده شده به سرور مجازی مسدود میشود و امکان اختصاص مجدد به سرور مجازی دیگری نیست. در این مثال 7 گیگابایت فضای حافظه هدر رفته است و نمیتوان سرور مجازی دیگری راهاندازی نمود. و این یکی از دلایل هزینه بر بودن Ram میباشد.
راهحل مشکل بوجود آمده چیست؟
اگر از داکر (Docker) استفاده کنیم، موتور داکر با توجه به میزان مصرف هر یک از کانتینرها، فضای مورد نیاز را به آن اختصاص میدهد و از هدر رفتن فضای حافظه (Ram) جلوگیری میکند.
مقدار فضای اختصاص داده شده (مصرف شده) در کانتینرها به این صورت میباشد:
- کانتینر شماره 1: 4 گیگابایت فضای استفاده شده و 0 گیگابایت فضای مسدود شده
- کانتینر شماره 2: 3 گیگابایت فضای استفاده شده و 0 گیگابایت فضای مسدود شده
- کانتینر شماره 3: 2 گیگابایت فضای استفاده شده و 0 گیگابایت فضای مسدود شده
با توجه به عدم هدر رفتن فضای حافظه، در این مثال 7 گیگابایت فضای خالی باقی میماند که میتوانیم از این فضای خالی برای ایجاد و اجرای کانتینرهای دیگری از آن استفاده کنیم.
بنابراین در مقایسه Size یا اندازه “سرور مجازی” و “کانتینر داکر”، کانتینر داکر وضعیت خیلی بهتری نسبت به سرور مجازی دارد و استفاده از کانتینر داکر پیشنهاد میشود.
Start-Up یا زمان بوت شدن:
در زمان بوت شدن سیستم، سرور مجازی بدلیل استفاده از سیستم عامل و لود شدن فایلهای باینری و کتابخانهها و سرویسها، نیاز به زمان زیادی جهت بوت اولیه نیاز دارد و در زمانی که نیاز به بوت سریع و راهاندازی سریع سرویسها و برنامهها نیاز باشد، میبایست هزینه زیادی انجام داد. در صورتی که کانتینر داکر از آنجایی که در سیستم عامل میزبان اجر میشود، نیاز به زمان بوت ندارد و این زمان ذخیره میشود. این یکی از دلایل برتری استفاده از کانتینر داکر نسبت به سرور مجازی میباشد.
در صورتی که نیاز به دو نسخه مختلف از یک برنامه داشته باشیم، اگر از سرور مجازی استفاده کنیم میبایست دو سرور مجازی مجزا راهاندازی کنیم. در مقابل، استفاده از کانتینر داکر نیاز به منابع بیشتر نسبت به سرور مجازی ندارد و در یک سرور با دو کانتینر داکر ایزوله امکان راهاندازی دو نسخه از برنامه وجود دارد. بدلیل استفاده از سیستم عامل میزبان، کانتینرهای داکر سبکتر و سریعتر از سرور مجازی خواهند بود. و همچنین با توجه به راهاندازی چندین کانتینر داکر در یک سیستم عامل میزبان، هزینههای کمتری نسبت به راهاندازی چندین سرور مجازی خواهیم کرد.
با توجه به نکات ذکر شده، استفاده از کانتینر داکر مناسبتر از سرور مجازی در وضعیت Startup میباشد.
Integration یا ادغام پذیری
ادغام ابزارهای مختلف با استفاده از سرور مجازی با اینکه امکانپذیر است ولی همیشه دارای مشکلاتی میباشد و راهاندازی و ادغام ابزارها نیاز به دانش فنی بالایی دارد. برای مثال میتوانیم فرض کنیم نیاز به راهاندازی و ادغام ابزارهای مختلف DevOps در سرور مجازی داریم.
همانطور که در تصویر مشخص است، قصد راهاندازی تعداد نمونه بالایی از Jenkins و Puppet را داریم. پس نیاز به راهاندازی تعداد زیادی سرور مجازی نیز هستیم که هر یک از سرورهای مجازی راهاندازی شده فقط میتواند یک نمونه اجرا شده از این ابزارها را داشته باشند.
اگر تصمیم بگیریم چند نمونه از Ansible، Nagios، Selenium و Git راهاندازی نماییم نیز مشکلات مشابهی خواهیم داشت و پیکربندی هر یک از ابزارها نیز پیشزمینه داشتن دانش فنی بالایی میباشد.
در مقابل، استفاده از داکر برای راهاندازی هر یک از ابزارها خیلی سادهتر و سریعتر است و میتوان برای هر ابزار یک کانتینر داکر راهاندازی نمود. این کار به سادگی اجرای چند دستور ساده است و اتصال این کانتینرها نیز به سادگی انجام میشود.
بطور خلاصه نمیتوان گفت که داکر در مقایسه با سرور مجازی یک گزینه منطقیتر است.
داکر جهت تسریع کار توسعه دهندگان (Developers) و مدیران سیستم (Sysadmins) به عنوان بخشی از ابزارهای زنجیرهای DevOps طراحی شده است.
توسعه دهندگان کدهای خود را بدون نگرانی در مورد تست یا محیط تولید انجام میدهند و مدیران سیستم نیز بدون نگرانی در مورد زیر ساختها، کارهای روزمره خود را با داکر انجام میدهند.
همچنان به دنبال سرور مجازی می گردید ؟
می توانید از سرورهای مجازی ابری لینوکس و ویندوز مرجع تخصصی “سرور مجازی فارسی” استفاده کنید.
سرور مجازی فارسی