موضوع کانتینرها و فناوری داکر بحث جدید و داغی است که اخیرا درمیان تیم های توسعه دهنده نرم افزاری و تیم های عملیاتی رواج پیدا کرده است. قطعا رویکردهای جدید همچون DevOps و استفاده از این متدولوژی همسو با تحولات و تکامل تولید نرم افزار موضوعی است که محبوبیت این تکنولوژی ها را افزون خواهد کرد. در سری مقالاتی قصد دارم تا مروری بر موضوعات مربوط به فناوری کانتینر و پیاده سازی آن داشته باشم. اما برای شروع بد نیست ابتدا با مفهوم کانتینر و سپس پلتفرم داکر که اخیرا بعنوان تکنولوژی پرکاربرد کانتینرهاست آشنا شویم.

فناوری کانتینر چیست؟

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

پلتفرم داکر چیست؟

برای استفاده از کانتینرها پلتفرمی به نام داکر (Docker) ارائه شد. این پلتفرم با ایجاد یک لایه نرم افزاری بر روی سیستم عامل هاست و سخت افزار، امکان به اشتراک گذاری سیستم عامل (هسته) و دسترسی اپلیکشن ها به سخت افزار سیستم را فراهم می کند. شاید تعریف درستی از داکر را بتوان با این جمله بیان کرد.

Build any app, Ship any where, Run any where

برای درک بهتر داکر، می توانید آنرا با هایپروایزورها و ماشین های مجازی که ایجاد می شوند مقایسه کنیم. 
همانطور که در تصویر زیر مشخص می باشد، هایپروایزور بعنوان لایه انتزاعی بین ماشین های مجازی و سخت افزار می باشد. از این رو، هر نرم افزار در قالب یک ماشین مجازی با سیستم عامل اختصاصی خود ایجاد و راه اندازی می شود. در این حالت، کلیه توابع، سرویس ها و وابستگی های نرم افزار با سیستم عامل در قالب یک ماشین مجازی مدیریت می شود و دسترسی به منابع پردازشی روی سرور از طریق هایپروایزور مدیریت می شود. در این حالت فرض کنید 20 اپلیکشن متفاوت دارید که لازم است در قالب 20 ماشین مجازی متفاوت با 20 سیستم عامل نصب و پیکربندی شود و این ها تمام باعث تخصیص بخش زیادی از منابع مصرفی سیستم خواهد شد. 
اما داکر با قرار گرفتن در یک لایه خاص، باعث تحولی در بسته بندی نرم افزار و دسترسی بهینه تر به منابع شده است. همانطور که در تصویر واضح است، موتور داکر (Docker Engine) بر روی سیستم عامل سرور شما نصب می شود و امکان به اشتراک گذاری این سیستم عامل  را برای تمام اپلیکشن ها و کانتینرهای بالایی فراهم می کند. در این حالت، دیگر نیاز به ایجاد ماشین مجازی و نصب سیستم عامل نیست و کلیه اپلیکشن ها در قالب کانتینرهای نرم افزاری اجرا می شوند. هر کانتینر بدون نیاز به نصب سیستم عامل و صرفا با بهره گیری از هسته سیستم عامل سرور، میتواند توابع و وابستگی های اپلیکشن ها را فراهم کند و آنها را به اجرا درآورد.  
در واقع داکر فرآیند توسعه و اجرای نرم افزارها را بشدت تسریع می کند چون با داشتن یک نسخه کوچک از سیستم عامل سرور، امکان به اشتراک گذاری آنرا برای تمام نرم افزارها فراهم آورده و دیگر نیاز به نصب سیستم عامل های سنگین با پیکربندی های پیچیده و … نیست.  مزایای اصلی و عمده داکر به شرح زیر است:
  • ایجاد و حذف بسیار سریع Container ها در چند ثانیه
  • امکان خاموش روشن کردن هر کانتینر و اپلیکشن داخلی آن
  • فراهم آوردن شرایط انتقال پذیری با رعایت سازگاری کامل
  • مدیریت بهینه منابع مصرفی
  • توسعه پذیری بسیار بالا در زمان افزایش IO
  • و …

در مقالات دیگر به سراغ معماری داکر و اجزاء آن خواهم رفت و شما را با نحوه راه اندازی و مدیریت کانتینرها با فناوری داکر و کوبرنیتز آشنا خواهم کرد. چنانچه نقطه نظرات و پیشنهاداتی در حوزه فناوری های جدید دارید با ما به اشتراک بگذارید.

فرستادن دیدگاه


حامیان