
داکر، یک پلتفرم متنباز و از نوع مجازی سازی، در سطح سیستم عامل است. با استفاده از داکر میتوانید، اپلیکیشن مورد نیاز خود را، در یک محیط ایزوله، به نام کانتینر (Container)، اجرا نمایید. در یک کانتینر، هر آنچه که یک اپلیکیشن، برای اجرا، نیاز دارد مانند کتابخانهها و برنامههای دیگر مورد نیاز قرار دارد. در این حالت، اپلیکیشن، به فایل یا برنامههای خارج از کانتینر، احتیاجی ندارد. از داکر، برای استقرار نرمافزارها، بخصوص در سرویسهای کلود، استفاده میشود. به همین جهت، آشنایی با داکر و یادگیری آن، برای توسعهدهندگان نرمافزار، ضروری بهنظر میرسد.
در این پلتفرم، چندین کانتینر، به طور همزمان، میتوانند بر روی یک سیستم عامل میزبان، اجرا گردند. کانتینرها، نسبت به هم ایزوله هستند. در صورت لزوم، کانتینرها، فقط از طریق مسیرهای ارتباطی مشخص، میتوانند بایکدیگر، ارتباط داشته باشند. در داکر، همهی کانتینرها، بر روی هستهی یک سیستم عامل، اجرا میگردند. این روش، باعث صرفهجویی در استفاده از منابع سختافزاری و سرعت و کارایی زیادی خواهد گردید. شعار داکر این است: برنامهی خود را بسازید و بدون هیچ تغییری، آن را بر روی هر پلتفرمی، اجرا نمایید(Build and Ship any Application Anywhere). در صورتیکه تمایل دارید در مورد داکر (Docker)، آشنایی بیشتری پیدا نمایید، با ما همراه باشید.
مزایای استفاده از داکر
- داکر هیچ سیستم عامل جدیدی را ایجاد نمیکند. داکر تنها از سیستم عامل میزبان استفاده مینماید. به همین دلیل، اپلیکیشنهای واقع در کانتینرها مستقیما با کرنل سیستم عامل میزبان، ارتباط خواهند داشت. ارتباط مستقیم با کرنل میزبان، سرعت و کارایی را، به میزان زیادی افزایش خواهد داد.
- نصب و راهاندازی، هر کانتینر، بسیار سریع و بدون راهاندازی مجدد سیستم است.
- داکر، برای توسعهدهندگان، محیط مناسبی را در شرایط ایزوله، برای تست و تغییرات برنامهها، بدون نگرانی از اجرای آنها، بر روی پلتفرمهای مختلف، فراهم میسازد.
آشنایی با مفهوم کانتینر(Container) در داکر
عملکرد کانتینرها در داکر، شبیه ماشینهای مجازی است. اما برخلاف ماشینهای مجازی، کانتینرها، فاقد سیستم عامل و هستهی مستقل هستند. در اصل، داکر، هیچ سیستم عامل جدیدی نمیسازد. برای داکرایز کردن هر نرمافزار، آن را بر روی یک ایمیج پایه نصب کرده و از روی ایمیج ساخته شده، میتوانید نمونههای دلخواه از آن ایمیج را، اجرا نمایید. هر نمونهی اجرا شده یک image را، کانتینر میگویند. همانطور که گفتهشد، کانتینرها، نسبت به هم مستقل هستند. کانتینرها، نسبت به ماشینهای مجازی، از منابع سختافزاری کمتری، استفاده میکنند.
تفاوت کانتینرها با ماشینهای مجازی(VM)
در ادامهی آشنایی با داکر، به تفاوت داکر با ماشین مجازی میپردازیم. در مجازی سازی سرورها، منابع سختافزاری یک سرور فیزیکی، بین چندین ماشین مجازی به اشتراک گذاشته میشود. هر ماشین مجازی(Virtual Machine)، دارای یک سیستمعامل مخصوص به خود، مثل ویندوز، لینوکس و یا سیستم عاملهای دیگر، میباشد. مثلا در صورتی که، ده عدد VM داشته باشیم و همهی VMها، از سیستم عامل لینوکس استفاده کرده باشند، ما، ده سیستم عامل مجزا خواهیم داشت. هر سیستم عامل نیز، هسته و یا کرنل مخصوص به خود را نیز دارد.
علاوه بر هستهی سیستم عامل هر ماشین مجازی، یک هسته دیگر نیز وجود دارد. هایپروایزر(Hypervisor)، هستهی سیستم عامل مجازی سازی است. هایپروایزر، موقع بوت شدن سیستم در حافظهی اصلی قرار گرفته و مدیریت منابع، برای ماشینهای مجازی را بر عهده دارد.
در داکر، با حذف هایپروایزر، سیستم عامل میزبان، با یک هسته یا کرنل بوت میشود. در مثال بالا، به جای ده میزبان با هستههای(کرنل) متمایز، از کرنل میزبان، به طور مشترک، برای تمام کانتینرها، استفاده میگردد. با این روش کارایی و سرعت اپلیکیشنها، بسیار زیاد خواهد شد. در شکل زیر، مقایسهی بین اجرای اپلیکیشنها در داکر و ماشینهای مجازی، نشان داده شده است. همانطور که مشاهده میشود، در داکر با حذف هایپروایزر و همچنین حذف سیستم عاملهای مجزا، کارایی سیستم را به مقدار زیادی افزایش میدهد.

داکر یا ماشینهای مجازی
کانتینرهای موجود در یک هاست، تنها بر روی سیستم عامل آن هاست و با استفاده از یک کرنل، اجرا میشوند. به همین علت، در شرایطی که، در مجازیسازی سرور، تمام ماشینهای مجازی(VM)، از یک نوع، سیستم عامل استفاده کنند(مثل توزیعهای مختلف لینوکس، که از خانوادهی سیستم عامل لینوکس هستند.)، شما براحتی میتوانید، به جای استفاده از ماشینهای مجازی با سیستم عاملهای متعدد، از کانتینرها در داکر، به عنوان جایگزین، استفاده نمایید. با داکرایز کردن نرمافزارها، مراحل طراحی، تولید و استقرار نرمافزارها، بسیار سریعتر خواهد گردید. همچنین، توسعه و ارتقای نرمافزارها با پایداری بالاتر و دسترسیپذیری بیشتری صورت میگیرد. در پستهای بعدی در روش نصب داکر بر روی ویندوز و نصب داکر بر روی اوبونتو را مورد بررسی قرار خواهیم داد و همچنین در بارهی معماری و دستورات پرکاربرد آن مطالب بیشتری بیان میگردد.