داکر شیرین تر از آنچه فکرش کنید(بخش اول)

1.1 مجازی سازی (Virtualization)در تکنولوژی مجازی سازی سرور می‌ توان چندین سیستم عامل را بر روی یک سخت افزار واحد پیاده سازی کرد و به طور همزمان از همه آن‌ ها استفاده کرد.کاربرد اصلی ESXI مجازی سازی است، به گونه ‌ای که شما می ‌توانید چند ماشین مجازی را به طور همزمان داشته باشید که در حال سرویس دادن به شبکه شما می ‌باشند و مدیریت منابع سخت افزاری را برای هر ماشین مجازی انجام دهید.به عنوان مثال می‌ توان مجازی سازی را برای پلتفرم سخت‌ افزاری، سیستم‌ عامل، ابزارهای ذخیره‌ سازی یا منابع شبکه انجام داد. هدف اصلی مجازی سازی، استفاده بهینه ‌تر از منابع مختلف سخت ‌افزاری یا نرم ‌افزاری است. مجازی سازی در سطوح مختلف انجام می ‌شود اما با دو مورد اصلی سروکار داریم: مجازی سازی سخت ‌افزار (Hardware Virtualization) مجازی سازی سطح سیستم عامل (OS-Level Virtualization)مجازی سازی یکی از فناوری ‌های بنیادین دنیای تکنولوژی و به ‌خصوص کلاد به ‌شمار می ‌رود. داکر ابزاری برای مجازی ‌سازی در سطح سیستم ‌عامل است و VM نوعی مجازی‌ سازی سخت ‌افزار محسوب می ‌شود. حال این سؤال پیش می‌ آید که چرا به مجازی ‌سازی نیاز داریم؟ پاسخ به این سؤال به چالش ‌های فرایند توسعه و استقرار اپلیکیشن بر می ‌گردد.1.1 چرا به مجازی‌ سازی نیاز داریم؟فرآیند توسعه و استقرار اپلیکیشن به تعداد زیادی نرم‌ افزار و بسته نرم‌ افزاری ثالث نیاز دارد و هر عضو تیم توسعه باید محیط توسعه خودش را بر اساس این نرم‌ افزارها و دیگر نیازهای تیم، پیکربندی کند. فرآیند پیکربندی محیط توسعه بسیار زمان ‌بر است. روند نصب این نرم‌ افزارها و پکیج‌ ها بر اساس نوع سیستم ‌عامل و ویژگی ‌های سیستم، متفاوت خواهد بود. حتی در فرآیند استقرار اپلیکیشن، باید همین محیط را روی سرور نیز پیکربندی کنید. گاهی اوقات اپلیکیشن‌ های مختلف به نسخه ‌های متفاوتی از یک نرم ‌افزار نیاز دارند. در چنین مواردی، مدیریت وابستگی ‌ها برای این اپلیکیشن ‌ها به عملیاتی پیچیده تبدیل می ‌شود.برای رفع این چالش‌ ها در فرآیند توسعه و استقرار، باید بتوان اپلیکیشن ‌ها را در محیط ‌های جدا و مستقل اجرا کرد که ساختن آنها کار ساده و سریعی باشد و به پیکربندی سیستم نیز وابستگی نداشته باشند. کانتینر های داکر و ماشین مجازی، هر دو در این زمینه به کار می ‌آیند.1.1 ماشین مجازی (Virtual Machine)سال‌ها قبل و با افزایش توان سخت ‌افزاری کامپیوتر ها و سرور ها، اپلیکیشن ‌ها نمی‌توانستند به ‌تنهایی از این منابع انبوه استفاده کنند. ابداع VM توانست این چالش را در زمینه استفاده بهینه از منابع سخت ‌افزاری حل کند. VM برنامه ‌ای نرم ‌افزاری است که یک سخت ‌افزار فیزیکی یا یک سیستم کامپیوتری را شبیه ‌سازی می‌کند. به زبان ساده ‌تر با استفاده از VM می ‌توان چندین کامپیوتر مجازی را روی یک کامپیوتر فیزیکی در اختیار داشت.ی VM با استفاده از لایه نرم ‌افزاری کم‌ حجمی به اسم هایپروایزر (Hypervisor) با کامپیوتر فیزیکی ارتباط برقرار می‌کند. هایپروایزر در کنار برقراری ارتباط، ماشین ‌های مجازی را از یکدیگر ایزوله کرده و منابع موجود اعم از قدرت پردازش، حافظه اصلی و فضای ذخیره ‌سازی را بین آنها توزیع می‌کند. VM می‌ تواند کتابخانه‌ ها و باینری‌ های مورد نیاز برای اجرای اپلیکیشن ‌ها را نیز در خود داشته باشد. سیستم‌ عامل میزبان با استفاده از هایپروایزر اجرا و مدیریت می‌شود. البته هایپروایزر های سطح یک (Bare Metal) مستقیماً روی سخت‌ افزار نصب می‌ شوند و نیازی به سیستم‌ عامل ندارند.هایپروایزر که نقش واسط را بین سخت ‌افزار و زیرساخت ایفا می‌کند. چندین VM که به کمک هایپروایزر از منابع سیستم زیرساخت استفاده می‌کنند. اپلیکیشن ‌ها و فرآیندها که روی هر سیستم ‌عامل میهمان اجرا می‌‌شوند.1.2 مزایای ماشین مجازیپیشینه ده ‌ها ساله مجازی ‌سازی و VM، دسترسی به مجموعه‌ ای غنی از ابزارهای مدیریتی و امنیتی را برای VM ممکن ساخته است.ی VM امکان اجرای چندین اپلیکیشن با چند سیستم‌ عامل مختلف را روی یک سرور یا زیرساخت فیزیکی فراهم می‌ کند.ی VM یک کامپیوتر کامل شامل منابع سخت‌ افزاری، سیستم‌ عامل و منابع نرم ‌افزاری را شبیه ‌سازی می ‌کند.ی VM فرایند مهاجرت بین زیرساخت داخلی (on-premise) و پلتفرم ابری را تسهیل می‌ کند.اکوسیستم پیرامون ماشین مجازی بسیار متنوع و گسترده است.1.3 چالش‌ های ماشین مجازی چیست؟ی VM معمولاً چند گیگا بایت حجم دارد و فرآیند پشتیبان ‌گیری یا انتقال آنها زمان ‌بر است.ی VM با بهره ‌مندی از سیستم‌ عامل داخلی به منابع زیادی نیاز دارد و یک سرور فیزیکی تعداد کمی VM را پشتیبانی می‌ کند.راه‌ اندازی و اجرای یک VMبه چند دقیقه زمان نیاز دارد.