Container چیست؛ تفاوت کانتینر و ماشین مجازی در چیست؟
برای اجرای کد در یک پروژه تمام موراد مورد نیاز آن در یک container قرار میگیرند تا در حالت ایزوله تست شود. در این مقاله می خوانید که container چیست؟ چه کاربردی دارد و کانتینر و ماشین مجازی چه تفاوتی با هم دارند؟
Software Container چیست ؟
در پاسخ به Software Container چیست بایستی گفت Software Container مکانی ایزوله است که یک اپلیکیشن بدون اینکه تاثیری بر روی دیگر بخش های سیستم بگذارد می تواند به راحتی اجرا شود.
تکنولوژی Software Container که توسط Docker ارایه شده است برای تغییر در روش انجام عملیات IT است که قبلا در تکنولوژی مجازی سازی انجام می شده است. تکنولوژی Docker توانسته سیر تکاملی مجازی سازی را تغییر دهد.
container چیست؟
یک Container همانند یک سیستم عامل اجرا می شود، یک سیستم فایل دارد و می توان از طریق شبکه به آن دسترسی داشت. اما تکنولوژی و مفهوم پشت Container ها بسیار با ماشین های مجازی متفاوت است. زمانی که با یک Container کار می کنید متوجه شباهت زیاد بین آن و ماشین مجازی خواهید شد فراموش نکنید که برای کار با کانتینر شما نیاز به خرید سرور اختصاصی دارید. Container ها سیر تکاملی تحول بعدی در مجازی سازی است.
چرا به کانتینر نیاز داریم؟
Container ها روشی برای حل این مشکل هستند که چطور نرم افزارهایی که از یک محیط پردازشی به محیط دیگری منتقل می شوند بدون مشکل اجرا شوند. این محیط ها می توانند از لپ تاپ یک برنامه نویس به یک محیط تست، یا از یک محیط طراحی به محیط عملیاتی و یا از یک ماشین فیزیکی به یک ماشین مجازی در سرویس ابری باشند.
مشکلات زمانی بروز می کند که نرم افزار های مورد نیاز در محیط های مذکور در شرایط یکسان قرار نمی گیرند. به عنوان نمونه در نظر بگیرید که شما قصد دارید Python 2.7 را تست کنید،اما قرار است در محیط عملیاتی از Pyton 3 استفاده کنید، در این حالت است که مشکلات خودشان را نشان می دهند. علاوه بر این،تفاوت در توپولوژی شبکه و تنظیمات امنیتی، نسخه OS نیز می تواند مشکلاتی را ایجاد کند
یک 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 و غیره.
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 چیست آشنا شده باشید به شما پیشنهاد می شود برای کسب اطلاعات در حوزه docker چیست مقاله ما را مطالعه نمایید.
تفاوت کانتینر و ماشین مجازی رو فهمیدم ممنون از مقاله عالیتون
سلام خیلی عالیه ایول مرسی