container یا کانتینر چیست و چه مزایایی دارد؟
کانتینر چیست ؟ در جواب تعریف کانتینر باید گفت که: کانتینر یک نرم افزار مجازی سازی است، در واقع یک بستهی نرمافزاری است که در سطح سیستم عامل فعال است. هر چیزی که نرمافزار برای اجرا شدن به آن نیازمند است و به صورت یک image بسته بندی می شود، را در برمیگیرد. در برنامههای قدیمی شما نمیتوانید جدا از سیستمعامل و نرم افزارهای دیگر کار کنید، ولی در کانتینرها این امکان وجود دارد. مهمترین دلیل وجود کانتینرها ایجاد محیطی برای انتقال نرم افزارها از یک محیط پردازشی به محیطی دیگر برای اجرا بدون وجود اشکال و نقص است.
در این مقاله میخواهیم بدانیم که کانتینر چیست ؟ چه مزایایی دارد ؟ چه تفاوتی با ماشین مجازی دارد، احتمالا به زودی استفاده از کانتینر به یک فناوری فراگیر تبدیل میشود. چون در سراسر دنیا استفاده از تکنولوژی ابری در حال افزایش است و کانتینر یک فناوری کلیدی در این زمینه است.
به زبان ساده منظور از کانتینر container چیست ؟
به بیان سادهتر (Container) کانتینرها تکنولوژی هستند، که در آن یک برنامه کاربردی در یک محفظهی مخصوص قرار میگیرد. در این محفظه هر چیزی که این برنامه ی کاربردی برای اجرای بدون نقص به آن نیاز دارد، وجود دارد. در نتیجه انتقال آن برنامه از یک محیط به محیط دیگر در اجرای آن برنامه اشکالی به وجود نمی آورد چون وابسته به محیط نیست و تمام مورادی که نیاز دارد در درون کانتینر موجود است.
کانتینر های لینوکسی
برنامههایی مانند: mysql, apache، php و … با استفاده از کانتینرهای لینوکسی با امنیت کامل قابل جداشدن از سیستم میزبانی که در آن در حال اجرا هستند، می باشند. در محیط های ایزوله نشده ممکن است کار یک سرویس روی کار بقیه سرویس ها تاثیر داشته باشد. ولی با استفاده از کانتینر دیگری این اتفاق نمی افتد. شاخصه ی مهم این تکنولوژی این است که، تقریبا تمام فناوری های مورد استفاده در کانتینرهای لینوکسی منبع باز می باشند.
توزیعهای لینوکسی برای اجرای بهتر کانتینرها
لینوکس توزیع های مختلفی دارد که بعضی از آن ها دارای یک سری فیچر اضافی هستند که مناسب برای نصب کانتینر نیستند. در اینجا چند توزیع سبک لینوکس را که مناسب برای میزبانی کانتینر هستند را معرفی می کنیم:
RancherOS
Photon OS
Ubuntu Core
پیشنهاد مطالعه مقاله ی هایپروایزر hypervisor چیست را به جهت کسب اطلاعات بیشتر در این زمینه مطالعه نمایید.
مزایا و کاربرد کانتینرها
به طور مثال در نظر بگیرید که وب سرور به دلیل وجود مشکلی در امنیت به مهاجم قابلیت دسترسی به اطلاعات موجود در پایگاه داده را بدهد. در اینجا کار یک سرویس بر روی سرویس دیگر تاثیر گذاشته است. ولی با وجود کانتینرها این مشکل رفع می شود، به این صورت که هر سرویس یا مجموعه ای از چند سرویس مرتبط را با با یک قالب مستقل از بقیه سرویس ها جدا میکند. که به این محیط مستقل container میگویند. مزیت بعدی کانتینرها امکان استفاده از برنامههای ماژولار است. نسخهبندی و ورژن کانتینرها هم مزیت دیگر این فناوری است.
در واقع استفاده از کانتینر این قابلیت را دارد که باعث کاهش مصرف منابع در کانتینر شده و همچنین باعث افزایش سرعت اجرا میشود. همونطور که گفتیم تمام چیزی که برنامه برای اجرا به آن نیاز دارد در قالب image بسته بندی می شوند. این image در یک محفظه ایزوله اجرا می شود ، و منابع مورد نیاز خود را مانند فضای ذخیره سازی و حافظه وcpu را با سیستم عامل به اشتراک نمی گذارد. این عمل باعث جداسازی کانتینر از محیط بیرون می شود. کانتینرها پورتال هستند، زیرا image از برنامه و اجزای مورد نیاز اجرای آن تشکیل شده است. شما همچنین میتوانید image را با کانتینرهای دیگر به اشتراک بگذارید و همین دلیل اصلی سرعت بیشتر و استفاده از منابع کمتر در کانتینر است.
تفاوت ماشین مجازی و کانتینر چیست ؟
در نگاه اول کانتینرها مانند یک ماشین مجازی هستند. اما در ماشینهای مجازی ما نیاز به ایجاد یک سیستم عامل کامل داریم، ولی در مورد کانتینرها اینگونه نیست. در کانتینرها فقط به بستههایی برای اجرای برنامه ها نیاز داریم، که این برنامه ها را از طریق سیستم عامل میزبان به دست می آوریم. این دلیل اصلی افزایش عملکرد و کاهش حجم برنامهها و همچنین سرعت بیشتر است. یک کانتینر لینوکسی را در نظر بگیرید، برنامههایی که در حال اجرا هستند در واقع روی سیستم عامل میزبان اجرا می شوند. در یک محفظه مستقل، که این برخلاف مجازی سازی قدیمی است. حجم ماشین مجازی ممکن است چند گیگ باشد که خیلی بیشتر از حجم کانتینر که نهایتا در حد چند صد مگابایت است، می باشد.
در سطوح بالا، کانتینرها و ماشینهای مجازی مشابه به نظر می رسند. زیرا هر دو محیط محاسباتی حفاظت شده ای هستند، که اجزای مختلف IT را با هم ترکیب کرده و آنها را از بقیه سیستم جدا می کنند. تفاوت اصلی آن ها در نحوه مقیاس گذاری و قابلیت حمل یا (portability) آن ها است. کانتینر مجموعه ای از یک یا چند فرآیند است، که از بقیه سیستم جدا شده است. کانتینر به فرآیند این اجازه را میدهد، که فقط به درخواستهای منابعی که مشخص شدهاند دسترسی داشته باشد. این محدودیتهای منابع تضمین میکنند که کانتینر میتواند روی نودی که ظرفیت کافی دارد کار کند.
ماشین های مجازی حاوی سیستم عامل (OS) مخصوص خود هستند که به آن ها این امکان را می دهد تا همزمان چندین عملکرد منابع فشرده را انجام دهند. منابع افزایش یافته در دسترس VM ها آن ها را قادر می سازد تا کل سرورها، Ossها، سیستم عامل ها، دسک تاپ ها، پایگاه داده ها و شبکه ها را جداسازی، تقسیم، کپی و تقلید کنند.
سرویسهای ارائهدهنده تکنولوژی کانتینر
توسعه دهندگان با توجه به بودجه و نیازمندی خود می توانند از سرویس های رایگان و سرویس های تجاری استفاده کنند.
Kubernetes کوبرنیتس:
این سرویس که یکی از معروفترین سرویس دهندگان کانتینر رایگان است، توسط گوگل ارائه شد.
(Docker (EE :
داکر اینترپرایز معروفترین پلتفرم تکنولوژی کانتینر است. داکر قابل نصب و اجرا روی لینوکس و ویندوز و … است.
پیشنهاد مطالعه:
برا ی کسب اطلاعات بیشتر در مورد کانتینرها و همچنین مقایسه ی آن ها با داکر ایمج مقاله ی تفاوت داکر image و کانتینر را در بلاگ ما مطالعه نمایید.
Open Shift Container Platform :
مبتنی بر کوبرنیتس است.
Rancher:
مانند مورد بالا مبتنی بر کوبرنیتس و کاملا رایگان است.
کانتینرهای ویندوزی یا Windows Container
دارای دو نوع مختلف Container هستند:
-
کانتینرهای Windows Server
با استفاده از Process و فناوری ایزولهسازی Namespace جداسازی برنامهی کاربردی را انجام می دهند. کانتینر مخصوص Windows Server با Container Host و همه ی کانتینرهای دیگر که روی هاست در حال اجرا می باشند، یک کرنل مشترک دارند. آن ها یک Hostile Security Boundary ارائه نمیدهند و از آنها نباید برای ایزولهکردن کدهای ناامن و اشتباه استفاده کرد. چون فضای کرنل مشترک است، آنها به پیکربندی و ورژن کرنل مشابه نیازدارند.
-
ایزولهسازی Hyper-V
ایزوله کردن با استفاده از HYPER V، با اجرای کانتینر در ماشین مجازی که بهدرستی بهینهسازی شده، به وسیله ی کانتینرهای Windows Server را افزایش میدهد. کرنل مخصوص به کانتینر هاست، با کانتینرهای دیگر آن هاست ،مشترک نیستند. این کانتینرها که ضمانت امنیتی ماشینهای مجازی را دارند، برای هاستینگ طراحی شده اند. چون کرنل مستقلی از هاست و از بقیه کانتینرها دارند، میتوانند همه ی کرنل ها را با نسخهها و پیکربندیهای مختلف اجرا کنند. مثلا همه ی ویندوز کانتینرهای بر روی Windows 10 از ایزولهسازی Hyper-V برای استفاده از پیکربندی و ورژن کرنل مخصوص به Windows Server استفاده می کنند.امیدواریم که این مقاله برای شما مفید بوده باشد.
چرا هاست ابری شرکت ابر آراز؟
قیمت هاست ابری ابر آراز به دلیل استفاده از تکنولوژی ابری بسیار مناسب و مقرون به صرفه است و نگرانی شما را از هزینههای غیرمنطقی و سرسامآور برطرف میکند؛ اما موضوع به همین جا ختم نمیشود؛ زیرا با خرید هاست ابری پر سرعت ابر آراز از خدمات تیم پشتیبانی ما که از یک گروه حرفهای متخصص تشکیل شدهاند، در ۲۴ ساعت شبانهروز بهره مند خواهید شد.
سلام
من درباره داکر تازه اطلاعات کسب کردم یک برنامه لینوکسی ساختم و میخوام اون رو با فلش روی هر پی سی دیگری اجرا کنم و اینکه تنظیمات اون بهم نریزه و البته امنیت کدها و برنامه هم حفظ بشه با سرچ هایی ک داشتم به داکر رسیدم حالا اولا آیا داکر آفلاین هم کار میکنه؟ و اینکه یه لینک آموزشی معرفی کنید برای تبدیل برنامه ام