رایانش ابریسرورهای ابریسرورهای اختصاصیسرورهای مجازی

Software Container چیست؟

 Software Container مکانی ایزوله است که یک اپلیکیشن بدون اینکه تاثیری بر روی دیگر بخش های سیستم بگذارد می تواند به راحتی اجرا شود.

وقتی وارد یک Container می شوید، به نظر می رسد که در داخل یک ماشین مجازی تازه راه اندازی شده قرار دارید. Container ها سیر تکاملی تحول بعدی در مجازی سازی است.

Software Container
Software Container

Software Container  چیست؟

زمانی که  با یک Container کار می کنید متوجه خواهید شد که شباهت زیادی بین یک Container و ماشین مجازی وجود دارد. یک Container همانند یک سیستم عامل  اجرا می شود، یک سیستم فایل دارد و می توان از طریق شبکه به آن دسترسی داشت.  اما تکنولوژی و مفهوم پشت Container ها بسیار با ماشین های مجازی متفاوت است.

تکنولوژی Software Container که توسط Docker ارایه شده است برای تغییر در روش انجام عملیات IT  است که قبلا در تکنولوژی مجازی سازی انجام می شده است. تکنولوژی که Docker ارایه کرده است توانسته سیر تکاملی مجازی سازی را تغییر دهد.

Container  چیست و چرا به آن نیاز داریم؟

Container  ها روشی برای حل این مشکل هستند که چطور نرم افزارهایی که از یک محیط پردازشی به محیط دیگری منتقل می شوند بدون مشکل اجرا شوند. این محیط ها می توانند از لپ تاپ یک برنامه نویس به یک محیط تست، یا از یک محیط طراحی به محیط عملیاتی و یا از یک ماشین فیزیکی به یک ماشین مجازی در سرویس ابری باشند.

مشکلات زمانی بروز می کند که نرم افزار های مورد نیاز در محیط های مذکور  در شرایط یکسان قرار نمیگیرند. به عنوان نمونه در نظر بگیرید که شما قصد دارید Python 2.7 را تست کنید،اما قرار است در محیط عملیاتی از Pyton 3 استفاده کنید، در این حالت است که مشکلات خودشان را نشان می دهند.  علاوه بر این،تفاوت در توپولوژی شبکه و تنظیمات امنیتی، نسخه OS نیز می تواند مشکلاتی را ایجاد کند

Container  ها چگونه این مشکل را حل می کنند؟

یک Container  حاوی محیط کامل اجرایی یک اپلیکیشن به اضافه تمامی موارد مورد نیاز، فایل های کتابخانه ای،فایلهای پیکربندی و تمامی توابع وابسته آن است، که در یک پکیج گنجانده شده اند.  با ساخت این مجموعه برای یک پلتفرم اپلیکیشن و اقلام مورد نیاز آن، تفاوت در نسخه های سیستم عامل و حتی تفاوت های ساختاری دیگر مشکل ساز نخواهند بود.

تفاوت آن با مجازی سازی در چیست؟

در تکنولوژی مجازی سازی، موارد مورد نیاز در قالب یک ماشین مجازی قرار می گیرند که  حاوی یک سیستم عامل کامل به همراه اپلیکیشن هایش است. به علاوه یک سرور فیزیکی که سه ماشین مجازی را اجرا می کند ممکن است یک hypervisor اصلی داشته باشد که سه سیستم عامل متفاوت بر روی آن اجرا می شوند.

در مقابل سروری که سه Container   بر روی آن است تنها با یک سیستم عامل اجرا می شود . هر یک از Container   ها منابع هسته سیستم عامل را با دیگران به اشتراک می گذارند. این مطلب بدین معنی است که Container  ها بسیار سبک هستند ومنابع کمتری نسبت ماشین های مجازی مصرف می کنند.

در عمل این مطلب چه تفاوتی دارد؟

یک Container   ممکن است چند ۱۰ مگابایت حجم داشته باشد در حالی حجم یک ماشین مجازی با سیستم عاملش به چندین گیگابایت می رسد.  به همین خاطر یک سرور می تواند Container   های بیشتری را نسبت به ماشین های مجازی میزبانی کند. ضمن اینکه ماشین های مجازی برای بوت شدن سیستم عاملشان به چندین دقیقه زمان نیاز دارند در صورتی که اپلیکیشن های موجود در Container  فورا اجرا می شوند.

اگر Container  ها منابع سیستم عامل را به اشتراک می گذارند، امنیت آنها چگونه است؟

آنچه به نظر می رسد این است که Container   ها به اندازه ماشین های مجازی ایمن نیستند. بدین خاطر که اگر حفره امنیتی در هسته سیستم عامل وجود داشته باشد، این ضعف امنیتی می تواند راهی را برای نفوذ به Container   هایی که از منابع سیستم عامل مربوطه استفاده می کنند باز کند.

برای راه اندازی Container   ها به چه سیستم عاملی نیاز است ؟

تکنولوژی Container  چیز جدیدی نیست، و از سال های پیش بر پایه لینوکس بر اساس LXC ساخته شده است. لذا تمامی توزیع های لینوکس که از هسته تقریبا جدیدی استفاده می کنند می توانند از این تکنولوژی استفاده کنند.  اما بسیاری از توزیع های لینوکس برای راه اندازی Container بسیار سنگین و پر از امکانات وسیع هستند. لذا برخی از نسخه ها به ویژه برای اجرای Container  ها طراحی شده ا ند، مانند CoreOS , RedHat Project Atomic , Snappy Ubunto , VMware Project Photon  و غیره.

Software Container
Docker Software Container

Container  ها در ویندوز :

مایکروسافت یک نسخه کم حجم از ویندوز سرور با نام Nano Server معرفی کرده   که به ویژه برای اجرای Container ها طراحی شده است.

Windows Container  شامل دو نوع متفاوت است :

Windows Server Container : یک محیط ایزوله برای پردازش  اپلیکیشن ها ارایه می کند. Windows Server Container  هسته سیستم عامل را با میزبان Container ها و تمامی Container هایی که بر روی این میزبان اجرا می شوند به اشتراک می گذارد.

Hyper-Container : این نوع Container بر روی محیط ایزوله ای که توسط Windows Server Container ارایه می شود قرار میگیرد. بدین صورت که هر یک از Container ها در یک ماشین مجازی بسیار بهینه شده اجرا می شوند. در این پیکربندی هسته میزبان Container ها با Container های Hyper-v  به اشتراک گذاشته نمی شود.

آیا ممکن است Container ها جای مجازی سازی را بگیرند؟

هیچ تردیدی وجود ندارد که ماشین های مجازی امنیت بهتری را ارایه می کنند. ضمن اینکه ابزارهای مدیریتی که برای کنترل ماشین های مجازی وجود دارد مانند VMware vCenter  و یا Microsoft System Center ، بسیار گسترده تر از Container ها هستند.  اما آنچه که در عمل به نظر می رسد این است که این دو تکنولوژی بیشتر از اینکه رقیب هم باشند می توانند مکمل یکدیگر باشند. به دلیل اینکه Container ها را می توان در ماشین های مجازی سبک اجرا کرد تا محیط ایزوله و امنیت آن افزایش یابد و هم  اینکه مجازی سازی سخت افزار، مدیریت ساختار سخت افزاری مانند شبکه،سرورها و ذخیره سازی مورد نیاز Container  ها را  راحت تر می کند.

Software Container
Software Container Vs VMs

اشکان نصیری

مدیر سرور در ایران هاست با +۵ سال سابقه در صنعت میزبانی وب و کارشناسی ارشد MBA

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بستن
بستن