آشنایی کامل با مفهوم کانتینرها ؛ کاربردها، مزایا و معایب
پیش از خرید سرور باید نسبت به قابلیتهای شبکههای کامپیوتری آگاه باشید تا بتوانید بهترین انتخاب را برای رفع نیازهای کسب و کار خود داشته باشید. در این مقاله قصد داریم به مفهوم کانتینر در علم شبکه بپردازیم. کرنل و نقش آن در سیستم عامل، کانتینر در مقابل ماشین مجازی، مزایا و معایب کانتینرها، نحوه عملکرد آنها و… مطالبی است که در ادامه خواهید خواند. با فالنیک همراه باشید.
- آشنایی با مفهوم کانتینر (Container)
- کرنل چیست و چه نقشی در دنیای سیستم عاملها دارد؟
- ماشین مجازی (Virtual Machine)
- کانتینر چیست؟
- کانتینرها چگونه کار میکنند؟
- کانتینرها در مقابل ماشینهای مجازی
- کانتینرهای برنامهای و کانتینرهای سیستمی
- کانتینرها چه مزایایی دارند؟
- کانتینرها چه معایبی دارند؟
- کاربردهای رایج کانتینرها
- ارائهدهندگان ابزارها و پلتفرمهای کانتینری
آشنایی با مفهوم کانتینر (Container)
یکی از مفاهمی که در مجازیسازی مطرح میشود کانتینر است. کانتینر (Container)، مکانیزم نرمافزارمحوری است که به شکل مجازی برنامههای کاربردی را برای استقرار، بستهبندی و ایزوله میکند. به بیان دقیقتر، توسعهدهندگان را از وابستگی به ماشینهای مجازی (VM) بی نیاز میکند، زیرا دسترسی به هسته سیستمعامل (OS) را امکانپذیر میکند تا برنامههای کاربردی به توابع کلیدی و موردنیاز دسترسی داشته باشند. در ادامه این مفاهیم را تشریح میکنیم.
کرنل چیست و چه نقشی در دنیای سیستم عاملها دارد؟
کامپیوترهای شخصی مولفههای سختافزاری مختلفی دارند که برای برقراری ارتباط درست با یکدیگر و استفاده بهینه از آنها به نرمافزاری به نام سیستم عامل نیازمند هستیم. بخشی از سیستم عامل که در تعامل با سختافزار است و نقش واسطی را میان سختافزار و سیستم عامل بازی میکند، کرنل (Kernel) نام دارد. کرنل وظیفه زمانبندی پردازهها برای اجرا، مدیریت هارد دیسکها، حافظه اصلی یا حافظههای حالت جامد که همگی در زمینه عملیات ورودی و خروجی مورد استفاده قرار میگیرند را بر عهده دارد. سایر بخشهای سیستم عامل مسئولیت روشن کردن درست کامپیوترها و ارائه دسکتاپی که کاربر قادر به برقراری ارتباط با سیستم است را بر عهده دارند. دسکتاپی که به کاربران اجازه میدهد برنامههای کاربردی را اجرا کرده و با کرنل سیستم عامل در ارتباط باشند. شکل زیر نحوه برقراری ارتباط کرنل با سیستم عامل را نشان میدهد.
ماشین مجازی (Virtual Machine)
فرض کنید کامپیوتری دارید که سیستم عامل مک روی آن نصب شده و برنامهای دریافت کردید که برای اجرا به توزیع لینوکسی اوبونتو نیاز دارد. یکی از سادهترین راهکارها در این زمینه، ساخت یک ماشین مجازی روی سیستم عامل مک است که سیستم عامل اوبونتو را اجرا میکند.
در سادهترین تعریف، ماشین مجازی (Virtual Machine) از سطوح سختافزاری و مجازیسازی کرنل تشکیل شده که توانایی اجرای یک سیستم عامل مهمان را دارد. بخشی از نرمافزار که هایپروایزر نام دارد، سختافزار مجازی را ایجاد میکند که مبتنی بر دیسک مجازی، کارت مجازی، پردازنده مجازی، فضای ذخیرهسازی مجازی و غیره است. این ماشین مجازی کرنل سیستم عامل میزبان را اجرا کرده و به آن دسترسی دارد. تنها در این صورت است که شما توانایی کار با سختافزار مجازی را دارید.
هایپروایزر نقش ظرفی را دارد که میزبان سیستم عامل است و به نرمافزارهای کاربردی اجازه دسترسی به توابع کلیدی سیستم عامل را میدهد. علاوه بر این، هایپروایزر به شکل مستقیم به سختافزار فیزیکی یک سیستم دسترسی دارد تا بتواند منابع موردنیاز ماشین مجازی را در اختیارش قرار دهد. بزرگترین مشکلی که هایپروایزرها دارند، این است که منابع سیستمی را به شکل گسترده مورد استفاده قرار میدهند تا بتوانند منابع محاسباتی و ذخیرهسازی را در اختیار ماشینهای مجازی و سیستم عامل نصب شده روی آن قرار دهند.
حال اگر به چند گروه مجازی روی ماشینی منفرد نیاز داشته باشید، در عمل مجبور هستید برای هر یک از آنها، ماشین مجازی تعریف کنید که باعث میشود منابع سیستمی بیهوده از دست بروند.
علاوه بر این، هایپروایزر مجبور به مجازیسازی سختافزار به شکل ایزوله شده برای هر ماشین مجازی است که باعث میشود، فشار سنگینی به سیستم میزبان وارد شود. همین مسئله موجب شد کارشناسان به دنبال راهکاری برای حل این مشکل باشند. راهکاری که در نهایت منجر به ظهور مفهوم کانتینرها شد.
کانتینر چیست؟
فنآوری کانتینر ریشه در پارتیشنبندی دارد و قدمت آن به دهه 60 میلادی باز میگردد. در آن بازه زمانی، برای اولین بار مفهوم جداسازی پردازه chroot به عنوان بخشی از هسته مرکزی یونیکس با موفقیت توسط گروهی از توسعهدهندگان انجام شد. امروزه، شکل مدرن این جداسازی در قالب کانتینرسازی برنامهها، ظهور داکر و کانتینرسازی سیستمی مثلLXC (کانتیر لینوکس) مورد استفاده قرار میگیرد. هر دوی این سبکهای کانتینرسازی به تیمهای فناوری اطلاعات اجازه میدهند، کد برنامه را از زیرساخت زیربنایی انتزاعی کند، مدیریت برنامههای کاربردی را سادهتر کنند و به بالاترین سطح از قابلیت حمل برسند. به طوری که استقرار برنامهها در محیطهای مختلف تولیدی با کمترین دردسر انجام شود.
ایمیجهای کانتینر اطلاعات موردنیاز برنامههای کاربردی را در خود جای میدهند، اطلاعاتی که در زمان اجرا روی سیستم عامل و از طریق موتور کانتینر اجرا میشوند. نکته مهمی که باید در ارتباط با برنامههای کاربردی کانتینری به آن اشاره داشته باشیم این است که نرمافزارهای مبتنی بر این فناوری میتوانند متشکل از چند کانتینر باشند. بهطور مثال، در معماری سه لایه، یک برنامه کاربردی میتواند متشکل از وب سرور فرانتاند، سرور برنامه و کانتینرهای پایگاه داده باشد که هر کدام به طور مستقل اجرا میشوند.
کانتینرها ذاتا بدون حالت (Stateless) هستند و اطلاعات یک نشست (Session) را نگهداری نمیکنند، البته این امکان وجود دارد که از طریق تکنیکهای خاصی، برنامههای کاربردی دارای حالت را نوشت. یکی از مزایای بزرگ ایمیجهای کانتینری توانایی اجرای همزمان آنها به گونهای است که اختلالی در عملکرد یکدیگر به وجود نمیآورند، در نتیجه هر زمان کانتینری با مشکل روبرو شد، امکان جایگزینی آن با نمونه سالم وجود دارد. به طور معمول، توسعهدهندگان از کانتینرها در طول توسعه و آزمایش استفاده میکنند و بهطور فزایندهای، تیمهای عملیات فناوری اطلاعات در محیطهای تولیدی و اجرایی نرمافزارها را روی کانتینرها مستقر میکنند. کانتینرهایی که قادر هستند روی سرورهای Brae Metal، ماشینهای مجازی و ابر اجرا شوند.
کانتینرها چگونه کار میکنند؟
کانتینرها مولفههای لازم برای اجرای نرمافزارها را در خود جای میدهند. این مولفهها شامل فایلها، متغیرهای محیطی، وابستگیها و کتابخانهها هستند. سیستم عامل میزبان دسترسی کانتینر به منابع فیزیکی مانند پردازنده مرکزی، فضای ذخیرهسازی و حافظه اصلی را مدیریت و محدود میکند تا یک کانتینر تمام منابع فیزیکی میزبان را مصرف نکند.
فایلهای ایمیج کانتینر نسخههای کامل، ایستا و اجرایی یک برنامه یا سرویس هستند که هر یک ممکن است فناوریهای مختلفی را پشتیبانی کنند. ایمیجها، قلب تپنده فناوری داکر هستند. ایمیجهای داکر از چند لایه تشکیل شدهاند که اولین ایمیج، وضعیت اصلی دارد و شامل تمام وابستگیهای مورد نیاز برای اجرای کدها در یک کانتینر است. هر ایمیج دارای یک لایه خواندنی و نوشتنی در بالای لایههای ثابت و بدون تغییر است. از آنجایی که هر کانتینر لایه کانتینری خاص خود را دارد که آن کانتینر خاص را سفارشی میکند، لایههای ایمیج پاییندستی را میتوان در چند کانتینر ذخیره کرد و به دفعات از آنها استفاده کرد یک ایمیج OCI مخفف Open Container Initiative از لایههای سیستم فایلی و پیکربندیها تشکیل شده است. یک ایمیج OCI دارای دو ویژگی عملیاتی مهم زمان اجرا و ویژگیهای ایمیج است. زمان اجرا (Runtime) عملکرد یک باندل سیستم فایلی را تعریف میکند که فایلهایی شامل تمام دادههای لازم برای عملکرد و زمان اجرا هستند. ویژگیهای ایمیج شامل اطلاعات مورد نیاز برای راهاندازی یک برنامه یا سرویس در کانتینر OCI است.
مکانیزم عملکردی کانتینرها به این صورت است که موتور کانتینر، ایمیجها را اجرا میکند، در این حالت، تیمهای توسعه میتوانند از طریق به کارگیری فناوریهای ارکستراسیون مانند کوبرنتیس (Kubernetes) فرآیند استقرارها نرمافزارها را انجام دهند. همین مسئله باعث شده تا کانتینرها قابلیت جابهجایی خوبی داشته باشند، زیرا هر ایمیج وابستگیهای مورد نیاز برای اجرای کدها در یک کانتینر را دارد و کاربران میتوانند ایمیجی را در سرویسهای ابری وب آمازون (AWS) استقرار داده و آزمایش اجرا کنند و سپس همان ایمیج را روی یک سرور داخلی نصب کرده و بدون نیاز به تغییر کدهای برنامه از آن استفاده کنند.
کانتینرها در مقابل ماشینهای مجازی
نکته مهمی که باید در این زمینه به آن دقت کنید این است که کانتینرها با مجازیسازی سرور تفاوتهایی دارند. معماری مجازیسازی اشاره به شبیهسازی یک سیستم سختافزاری دارد. هر ماشین مجازی میتواند یک سیستم عامل را در یک محیط عملیاتی اجرا کند و از طریق مفهوم انتزاع، منابع موردنیاز برنامههای کاربردی را در اختیار آنها قرار دهد. به بیان سادهتر، هایپروایزر که پیشتر به آن اشاره کردیم، سختافزارهای فیزیکی مثل پردازندههای مرکزی، حافظه، فضای ذخیرهسازی و منابع شبکه را شبیهسازی میکند تا ماشینهای مجازی به آنها دسترسی داشته باشند. به بیان دقیقتر، سختافزارهای مجازی را میان چند نمونه ماشین مجازی به اشتراک قرار میدهد.
ماشینهای مجازی فضای بیشتری نسبت به کانتینرها اشغال میکنند، زیرا برای کارکرد درست به سیستم عامل مهمانی نیاز دارند که روی آنها نصب شده باشد. در نقطه مقابل، کانتینرها فضای زیادی را مصرف نمیکنند، زیرا هر کانتینر سیستم عامل میزبان را به اشتراک میگذارد.
ماشینهای مجازی میتوانند سربار اضافی قابل توجهی به منابع کلیدی سیستم مثل حافظه اصلی، فضای ذخیرهسازی، شبکه و عملیات ورودی و خروجی وارد کنند، زیرا هر ماشین مجازی یک سیستم عامل را اجرا میکند. به بیان دقیقتر، ماشینهای مجازی میتوانند بسته به نوع کاربری اندازههایی در مقیاس چند صد گیگابایت داشته باشند. همچنین، فرآیند ساخت آنها به زمان بیشتری نسبت به کانتینرها نیاز دارد. از آن جایی که کانتینرها هسته سیستم عامل را به اشتراک میگذارند، تنها یک نمونه از یک سیستم عامل توسط کانتینرها مورد استفاده قرار میگیرد. با اینحال، سیستم عامل توانایی پشتیبانی از کانتینرهای با اندازه کوچک و ویژگیهای ضروری را دارد که باعث میشود اندازه آنها در مقایسه با ماشینهای مجازی که هر یک سیستم عامل خاص خود را میزبانی میکنند، کوچکتر باشد.
کانتینرهای برنامهای و کانتینرهای سیستمی
کانتینرهای برنامه، مثل داکر (Docker)، فایلها، وابستگیها و کتابخانههای یک برنامه را برای اجرا در یک سیستم عامل کپسوله میکنند. کانتینرهای برنامه به کاربر این امکان را میدهند که یک کانتینر منفرد را برای چند برنامه یا سرویس مستقل ایجاد کند تا بتوانند از آن استفاده کنند.
همین مسئله باعث شده تا یک کانتینر برنامه، گزینه مناسبی در ارتباط با برنامههای مبتنی بر معماری میکروسرویس مناسب باشد. در معماری میکروسرویس، سرویسیهایی که یک برنامه واحد را به وجود میآورند مستقل از یکدیگر ساخته شده و اجرا میشوند. در نتیجه اگر یکی از سرویسها با مشکل روبرو شود، برنامه کاربردی از حرکت باز نمیایستد و تنها عملکرد بخشی از برنامه از دست میرود.
یک نرمافزار مبتنی بر معماری میکروسرویس که نمونههای کانتینری را مورد استفاده قرار میدهد، به تیمهای توسعه اجازه میدهد، فرآیند گسترشپذیری را به شکل منفرد در ارتباط با هر سرویس مورد استفاده قرار دهند. راهحل فوق، اجازه میدهد، مقیاسگذاری میکروسرویسها در مقایسه با مقیاسگذاری برنامههای کاربردی مبتنی بر معماری یکپارچه به لحاظ مصرف منابع سیستم کارآمدتر باشد.
کانتینرهای سیستمی، مثل LXC، از نظر فناوری به کانتینرهای کاربردی و ماشینهای مجازی شبیه هستند. یک کانتینر سیستمی میتواند یک سیستم عامل را اجرا کند، شبیه به حالتی که یک ماشین مجازی قادر به اجرای یک سیستم عامل به شکل کپسولهشده است. با این حال، کانتینرهای سیستمی تلاشی برای شبیهسازی سختافزار سیستم انجام نمیدهند و در مقابل، عملکردی شبیه به کانتینرهای برنامه دارند. به طوری که به کاربر اجازه نصب کتابخانهها، زبانها و پایگاه دادههای سیستمی مختلف را میدهند.
کانتینرها چه مزایایی دارند؟
از مزایای کانتینرها به موارد زیر باید اشاره کرد:
- از آنجایی که کانتینرها هسته یکسان با سیستم عامل میزبان دارند، عملکرد بهتری نسبت به ماشینهای مجازی دارند که هر یک نمونههای جداگانهای از سیستم عامل را اجرا میکنند.
- کانتینرها قابلیت حمل بهتری نسبت به سایر فناوریهای مشابه دارند. این انعطافپذیری در جابهجایی باعث شده تا بتوان از آنها روی سیستمهای مختلف که سیستم عامل میزبان یکسانی را دارند، استفاده کرد، بدون آنکه ضرورتی وجود داشته باشد تا تغییری در کدها اعمال کرد. این فرآیند کپسولهسازی کدهای عملیاتی یک برنامه کاربردی در کانتینرها به این معنی است که هیچ واسطی میان سیستم عامل مهمان یا کانتیر وجود ندارد که نقش مهمی در افزایش سرعت اجرا دارد.
- کانتینرسازی (Containerization) اجازه میدهد به شکل موثرتری از حافظه اصلی، پردازنده مرکزی و فضای ذخیرهسازی استفاده کنیم که درست در نقطه مقابل مکانیزمهای مجازیسازی سنتی قرار دارد.
- از آنجایی که کانتینرها سربار اضافی مانند ماشینهای مجازی به وجود نمیآورند و نیازی ندارند تا نمونههای مختلفی از سیستم عاملها را اجرا کنند، امکان اجرای همزمان کانتینرهای بیشتری در زیرساختها وجود دارد.
- یک میزبان فیزیکی متوسط میتواند دهها ماشین مجازی یا صدها کانتینر را پشتیبانی کند، با این حال، در محیطهای عملیات واقعی، نوع کاربری تاثیر مستقیمی بر میزان استفاده کانتینر و ماشین مجازی از منابع سیستمی دارد. به طوری که در این زمینه نیز کانتینرها موفقتر از ماشینهای مجازی هستند.
- کانتینرها بالاترین سطح از سازگاری در فرآیند چرخه عمر برنامههای کاربردی را ارائه میکنند، یک محیط چابک را پیادهسازی میکنند و رویکردهای جدید مانند یکپارچهسازی مداوم (CI) و تحویل مداوم (CD) را تسهیل میکنند. علاوه بر این، سریعتر از ماشینهای مجازی هستند که نقش مهم در زمینه برنامههای توزیع شده دارد.
کانتینرها چه معایبی دارند؟
یک مشکل بالقوه کانتینرسازی، عدم تفکیک از سیستم عامل میزبان است. از آنجایی که کانتینرها سیستم عامل میزبان را به اشتراک میگذارند، تهدیدهای امنیتی بیشتری در مقایسه با مجازیسازی مبتنی بر هایپروایزر به وجود میآورند. یک راهکار برای غلبه بر این مشکل، ساخت کانتینرها در سیستم عاملی است که روی یک ماشین مجازی اجرا میشود. این رویکرد تضمین میکند که اگر یک نقض امنیتی در سطح کانتینر رخ دهد، مهاجم فقط میتواند به سیستم عامل آن ماشین مجازی دسترسی داشته باشد و ماشینهای مجازی یا میزبان فیزیکی با تهدید امنیتی روبرو نمیشوند.
یکی دیگر از معایب کانتینری، عدم انعطافپذیری در ارتباط با سیستم عامل است. در استقرارهای معمولی، هر کانتینر مجبور به استفاده از سیستمعامل پایه است، در حالی که نمونههای هایپروایزر انعطافپذیری بیشتری در این زمینه دارند. به عنوان مثال، یک کانتینر ایجاد شده بر روی یک میزبان مبتنی بر لینوکس نمیتواند نمونهای از سیستم عامل ویندوز سرور یا برنامههایی را که برای اجرا بر روی ویندوز سرور طراحی شدهاند اجرا کند.
قابلیت نظارت مسئله مهم دیگری است. با وجود صدها یا بیشتر کانتینر در حال اجرا بر روی یک سرور، ممکن است فرآیند نظارت بر عملکرد کانتینرها دشوار و پیچیده باشد.
خوشبختانه در این زمینه فناوریهای مختلفی به منظور نظارت بر عملکرد کانتینرها توسط فروشندگان مختلف در قالب پروژههای منبع باز توسعه پیدا کرده که کارشناسان شبکه با چالشهای عملیاتی کمتری در ارتباط با نظارت بر عملکرد کانتینرها، دادههای ارسال و دریافتی توسط آنها، برنامهریزی و زمانبندی روبرو شوند.
کاربردهای رایج کانتینرها
کانتینرها اغلب با میکروسرویسها و ابر مورد استفاده قرار میگیرند، اما امکان استفاده از آنها در ارتباط با برنامههای کاربردی مبتنی بر معماری یکپارچه و مراکز داده نیز وجود دارد.
کانتینرها بهترین گزینه در زمینه کار با میکروسرویسها هستند، زیرا هر سرویسی که برنامه را تشکیل میدهد در یک کانتینر مقیاسپذیر مستقل بستهبندی میشود. به عنوان مثال، یک برنامه میکروسرویس میتواند از سرویسهای کانتینری مختلفی تشکیل شده باشد که هشدارها، دادههای ثبت نام و احراز هویت کاربر را مدیریت میکند و در کنار آن سرویسهای دیگری را نیز ارائه میدهد. هر سرویس در سیستم عامل یکسانی کار میکند، در حالی که به شکل ایزوله اجرا میشود. هر سرویس میتواند متناسب با تقاضا پهنای باند بیشتر یا کمتری را پیدا کند. همچنین، زیرساختهای ابری بهترین گزینه برای کار با کانتینرها هستند، زیرا باید دو اصل مقیاسپذیری ارتجامی و دسترسی نامحدود به منابع برای کاربران را تضمین کنند.
الگوی معماری کاربردی یکپارچه سنتی به گونهای است که تمام کدهای یک برنامه در یک فایل اجرایی نوشته میشوند. برنامههای مبتنی بر معماری یکپارچه در زمینه مقیاسپذیری عملکرد محدودتری نسبت به برنامههای کاربردی توزیع شده دارند، اما امکان کانتینر کردن آنها نیز وجود دارد. به طور مثال، MTA سرنام Docker Modernize Traditional Applications به کاربران کمک میکند تا برنامههای یکپارچه را به کانتینرهای داکر منتقل کنند تا بتوانند به مقیاسبندی بهتر دست پیدا کنند. البته در برخی موارد، تیمهای توسعه مجبور به بازسازی کامل کدها و تغییر در الگوی معماری هستند.
ارائهدهندگان ابزارها و پلتفرمهای کانتینری
امروزه فروشندگان مختلفی در زمینه ارائه پلتفرمها و ابزارهای مدیریت کانتینر در زمینه خدمات ابری و ارکستراتورها به فعالیت اشتغال دارند. با اینحال دو گزینه داکر (Docker) و کوبرنتیس (Kubernetes) نامهای شناخته شده در زمینه فناوریهای کانتینری هستند.
داکر (Docker) یک پلتفرم کانتینر برنامهمحور منبع باز است که برای سیستم عاملهای لینوکس و ویندوز، مک و سیستم عاملهای مینفریمها طراحی شده است. داکر از ویژگیهای جداسازی منابع مانند cgroups و هستههای لینوکس برای ساخت کانتینرهای ایزوله استفاده میکند.
مایکروسافت فناوریهای کانتینری قدرتمندی مثل کانتینرهای Hyper-V و Windows Server را ارائه میکند. هر دو فناوری به شکل تقریبا یکسانی بر فرآیند ساخت، نگهداری و استفاده از کانتینرها نظارت میکنند، زیرا از ایمیجهای کانتینری یکسانی استفاده میکنند. با این حال، از نظر سطح ایزوله بودن، سرویسهای متفاوتی را ارائه میدهند. فرآیند تفکیک کانتینرهای مبتنی بر سرور ویندوز از طریق فضاهای نام، کنترل منابع و تکنیکها فنی پیچیده به دست میآید. کانتینرهای هایپر-وی (Hyper-V) مکانیزم ایزولهسازی را از طریق نمونههای کانتینری که داخل یک ماشین مجازی سبک وزن اجرا میشوند، انجام میدهند. بهطوری که در عمل یک محصول نرمافزاری را به یک کانتینر سیستمی تبدیل میکنند.
در این زمینه، فناوری هماهنگکننده (orchestrator) کانتینر منبع باز کوبرنتیس (Kubernetes) که توسط گوگل توسعه پیدا کرده به استاندارد شناخته شدهای در این زمینه تبدیل شده است. فناوری فوق، کانتینرها را در پادهایی (Pods) روی گرهها که منابع میزبان هستند، سازماندهی می کند. کوبرنتیس قادر به خودکارسازی، استقرار، مقیاسبندی و نگهداری از کانتینرهای برنامهها است. در حالی که قابلیتهای کاربردی دیگری نیز ارائه میکند. از محصولات موفق مبتنی بر کوبرنتیس که ویژگیهای کاربردی بیشتری در اختیار کاربران قرار میدهند باید به Rancher، Red Hat OpenShift و Platform9 اشاره کرد.
علاوه بر کوبرنیست، ابزارهای ارکستراسیون کانتینر دیگری نیز در دسترس هستند که از مهمترین آنها باید به DC/OS از D2iQ و Docker Swarm اشاره کرد.
ارائهدهندگان بزرگ خدمات ابری نیز همگی کانتینرهای متنوعی را به عنوان محصول در قالب سرویس (CaaS) مخفف containers as a service ارائه میدهند که از آن جمله باید به سرویس کانتینر ارتجاعی آمازون (ECS) مخفف Amazon Elastic Container Service و سرویس ارتجاعی Kubernetes (EKS)، AWS Fargate مخفف Elastic Kubernetes Service، موتور GKE مخففGoogle Kubernetes ، نمونههای کانتیری مایکروسافت آژر ACI مخفف Microsoft Azure Container Instances سرویس کوبرنتیس آژر AKS مخفف Azure Kubernetes Service و IBM Cloud Kubernetes Service و نمونههای مشابه اشاره کرد. علاوه بر این، کانتینرها میتوانند در زیرساختهای ابر عمومی یا خصوصی بدون استفاده از محصولات کانتینری اختصاصی فروشندگان ابر مستقر شوند.
کلام آخر
در این مقاله سعی کردیم، مروری کلی بر مفهوم کانتینر داشته باشیم. همچنین، مکانیزم جداسازی کرنل و برنامههای کاربردی در سیستم عامل را مورد بررسی قرار دادیم و شرح مختصری در ارتباط با ماشین مجازی و مزیتها و معایب کانتینرها بیان کردیم. در نهایت چند مورد از کاربردهای نرمافزارهای کانتینری را معرفی کردهایم. در مجموع باید بگوییم که کانتینرها بالاترین سطح از انعطافپذیری، مقیاسپذیری، سرعت و جابهجایی را در اختیار تیمهای توسعه قرار میدهند. به طوری که روند توسعه برنامههای کاربردی سادهتر از قبل شود.