این روزها صحبت داکر (Docker) در محافل فناوری داغ است و به احتمال زیاد از گوشه و کنار تعریفهای داکر به گوش شما خورده است.در این مقاله قصد دارم Docker را به شما معرفی کنم .قبل از معرفی کامل داکر چند چیز را باید خوب بدانیم. این که کانتینرها چه هستند و به ما چه قابلیتی می دهند، سپس باید بفهمیم سیستم های توزیع پذیر چه کمکی می توانند به ما بکنند.در کل تعریف و تشریح داکر و سیستم های مدیریت کانتینر بسیار سخت است و لازم می دانم قبل از ورود به بحث کمی آمادگی ذهنی به شما بدهم.
فرض کنید بر روی سرور شما یک سیستم عامل لینوکس نصب شده و شما می خواهید چند اپلیکیشن و یا سرویس را در یک سرور راه اندازی کنید که ممکن است سرور شما را دچار زحمت کند . اولین راه حل این است که یک VM بر روی سرور بالا بیاورید و یک سیستم عامل بر روی آن نصب کنید و سرویس خود را بر روی آن بالا بیاورید.
خوب این راه حل نسبتا خوبی است اما ریسورس شما را به شدت درگیر نگهداری VM میکند. برای حل این مشکل تفکری به اسم کانتینر را مطرح کردند که با استفاده از هسته یا همان کرنل لینوکس میتوان یک سیستم عامل دیگر را در قالب یک کانتینر هندل کرد .این به ما کمک می کند از یک کرنل واحد استفاده کنیم بی آن که از ریسورس بی جهت استفاده کنیم . با این تفکر میتوان یک اپلیکیشن یا سرویس را چند تا چند تا و به صورت توزیع در یک سیستم عامل یا یک سیستم Distributed تجربه کرد .
درگذشته شاید هر کس فکر می کرد می خواهد از سیستم های Cloud استفاده کند ، نا خود آگاه به سمت OpenStak یا سایت هایی مانند Heroku و Openshift و … می رفتند.اما امروزه داکر دنیای نرم افزاری را به فکر وادار کرده . این تفکر توانسته تمامی کمپانی های بزگ مانند RedHat, SoundCloud, RedHat, Amazon, Google, SoundCloud, DigitalOcean, Spotify, NETFLIX, و… را دچار تغییرات بسیاری کند و آن ها را وادار به کانتریبیوت و توسعه هر چه بیشترش بنماید. در ایران نیز شرکت های بزرگی مانند CoffeBazar, QuizOfKings, TeleWebion , Tapsell و بسیاری دیگر پروژه های خود را بر پایه کانتینر منیجرهایی مانند Docker پیاده سازی کرده و بر روی آن حساب ویژه ای باز کرده اند.
داکر (Docker)
در کل Docker یک سیستم متن باز برای ساخت اپلیکیشن های توزیع شده و راه اندازی سرویس های مبتنی بر لینوکس است.همچنین یک توسعه دهنده توسط داکر می توانید اپلیکیشن های خود را سریع و راحت منتشر کند.
Docker به صورتی عمل می کند که عملیات بسته بندی، حمل و توسعه هر اپلیکیشن را بطور خودکار انجام دهد. به این معنی که کل اپلیکیشن را در قالب یک کانتیتر قرار میگیرد و قابل حمل بر روی دیگر سرور هاست . این عامل کمک میکند در زمان و سرعت دیپلوی کردن و راه اندازی و امنیت جابه جایی پروژه برنامه نویس یا ادمین، آسوده خاطر شود. در کل منظور از امنیت این است که اپلیکیشن های ما در هر کانتینر به صورت جداگانه و بدون هیج دسترسی به هم به صورت موازی فعالیت می کنند . مگر آن که آن ها را به هم لینک کرده یا از سرویس های ارائه شده آن ها استفاده کنیم. امنیت داکر با خود کرنل و آپی تیبل لینوکس تضمین می شود . اگر همه چیز در پروژه و رول های آپی تیبل رعایت شود ، خطر بسیار کمی شما را تهدید می کند.
داکر نگاه نمیکند و ببیند سرور شما از چه سیستم عاملی استفاده میکنه بلکه خودش رو با سیستم عاملتون وقف می دهد. حتی اگه ویندوز یا مک باشید. این را اضافه کنم که داکر هیچ سیستم عامل جدیدی ایجاد نمی کند بلکه این امکان را به بسته نرم افزاری ایجاد شده می دهد که از Kernel اصلی سیستم عاملی که بر روی آن نصب شده است استفاده نماید و در زمان انتقال نیز فقط Package نرم افزاری منتقل می شود نه ماشین مجازی(این برای سرور های ویندوزی صدق نمیکند.) ، در واقع Docker Engine یا موتور اصلی Docker جایگزین نرم افزار Hypervisor می شود و اینکار باعث می گردد که کارایی سیستم ما به شدت افزایش یابد زیرا یک لایه واسط به نام Hypervisor حذف شده و نرم افزار بصورت مستقیم با هسته اصلی سیستم عامل لینوکس کار میکند با این تفاوت که کاملا ایزوله شده است.
داکر Open Source است (متن باز)، بدین معنی که هر کسی می تواند Docker را تهیه و استفاده و توسعه دهد و قابلیت های جدیدی به آن اضافه کند و حتی یک پروژه مبتنی بر داکر ارائه دهد Kubernetes.