داکر چیست؟ داکر یک پلتفرم آزاد برای طراحی، توسعه و اجرای اپلیکیشنهای مختلف است. از طریق داکر شما میتوانید اپلیکیشنهای خودتان را از زیرساخت جدا کنید و بتوانید نرمافزارهای طراحی شده را با سرعت بالاتری تحویل دهید. با کمک داکر میتوانید به همان شکلی که اپلیکیشنها را مدیریت میکنید، زیرساخت را نیز کنترل نمایید. توجه داشته باشید که برای اجرای داکر به خرید سرور مجازی یا سرور اختصاصی نیاز خواهید داشت. در ادامه این مقاله قصد داریم به این سوال پاسخ دهیم که داکرچیست؟ و کاربرد آن با ما همراه باشید.
داکر یا Docker چیست؟
داکرچیست؟ و کاربرد آن چیست ؟داکر یک پلتفرم نرمافزاری است که از طریق آن میتوانید توسعه، تست و اجرای نرم افزارهای مختلف را با سرعت بالایی انجام دهید. داکر نرمافزارها را داخل یونیتهای استانداردی به نام کانتینر قرار میدهد. کانتینرها تمامی مواردی که برای اجرای نرمافزار به آنها نیاز دارید مثل لایبرریهای مختلف، ابزارهای سیستم، کدها و رانتایمهای مختلف را در اختیار آن قرار میدهد. با استفاده از داکر میتوانید نرم افزار خودتان را به سرعت در هر محیطی اجرا کنید و مطمئن باشید که کد شما اجرا میشود. در واقع اگر از داکر برای طراحی، تست و اجرای نرم افزارهای خودتان استفاده کنید، میتوانید فاصله زمانی بین نوشتن کد و اجرای آن در مرحله Production را کاهش دهید.
تاریخچه پلتفرم داکر
داکر اولین بار به عنوان یک پلتفرم متن باز تحت عنوان dotCloud در سال ۲۰۱۳ معرفی شد. پس از چند ماه افراد زیادی به این پلتفرم علاقه نشان دادند. از آنجایی که یک کمپانی شناخته شده، مسئولیت پشتیبانی از این پلتفرم را برعهده داشت و از انواع توزیعهای لینوکس هم پشتیبانی میکرد، این پلتفرم محبوبیت زیادی به دست آورد. در زمان معرفی نسخه ۱.۰ داکر در سال ۲۰۱۴ این نرمافزار بیش از ۲.۷۵ میلیون دانلود موفق داشت. در سال ۲۰۱۶ نیز مایکروسافت برای اولین بار از کانتینترهای اختصاصی ویندوز سرور رونمایی کرد. به این ترتیب بخش زیادی از کاربران ویندوز هم به استفاده از داکر روی آوردند. به این ترتیب داکر توانست کاربران زیادی از پلتفرمهای مختلف را جذب نماید.
Container چیست؟
کانتینر نسخهای قابل اجرا از یک تصویر است. با استفاده از API یا CLI داکر شما میتوانید یک کانتینر را ایجاد نمایید، اجرا کنید، جابجا کنید یا حذف نمایید. میتوانید هر کانتینر را به یک یا چند شبکه مجزا متصل نمایید، به آن حافظه اختصاص دهید و یا یک کانیتنر جدید را براساس وضعیت کانتینر فعلی ایجاد کنید. به صورت پیشفرض کانتینرها به صورت کامل از دیگر کانتینرهای موجود و دستگاه میزبان ایزوله شدهاند اما شما میتوانید میزان ایزوله بودن آن از شبکه، حافظه یا دیگر زیرسیستمهای موجود را کنترل نمایید. کانتینر از طریق تصویر و هر اطلاعاتی که در زمان اجرا یا ایجاد در اختیار آن قرار میدهید تعریف میشود. زمانی که یک کانتینر حذف میشود هم هر تغییری در وضعیت آن که در یک Storage پایدار ذخیره نشده باشد حذف خواهد شد.
داکر چگونه کار میکند؟
داکر براساس معماری کلاینت-سرور کار میکند. این سرویس شامل کلاینت ، میزبان و رجیستری داکر میباشد. کلاینت برای اجرای دستورات مختلف کاربرد دارد و هاست نیز وظیفه اجرای Daemon را برعهده دارد. در رجیستری نیز Imageهای داکر نگهداری میشود. کلاینت داکر از طریق REST API با daemon ارتباط برقرار میکند و از این طریق میتوانید کانتینرهای داکر را ایجاد، اجرا و توزیع نمایید. هم کلاینت و هم daemon را میتوانید روی یک سرور اجرا کنید و یا به صورت ریموت آنها را روی دو سرور مجزا اجرا نمایید.
مراحل کار داکر به شرح زیر است:ما از کلاینت (CLI) برای ارسال دستور Build به Daemon استفاده میکنیم تا یک Image داکر ایجاد نماییم. براساس ورودیهایی که در اختیار آن قرار میدهیم، Daemon یک Image ایجاد و آن را داخل رجیستری نگهداری میکند.در صورت نیاز میتوانید Image مورد نظر را از هاب داکر دانلود کنید.در صورت نیاز به اجرای میتوانید دستور اجرا را از طریق CLI ارسال نمایید.
کاربردهای داکر
توسعه سریع و پایدار نرمافزارهای مختلف
داکر چرخه توسعه نرمافزار را ساده میکند و به توسعه دهنده این امکان را میدهد که با استفاده از کانتینترهای محلی در یک محیط استاندارد برنامههای خودش را توسعه دهد. کانتینرهای برای جریانهای کاری CI/CD بسیار موثر هستند. برای مثال نگاهی به مثالهای زیر داشته باشید:با استفاده از کانتینرهای داکر میتوانید کدهای خودتان را به صورت محلی بنویسید و آن را در اختیار همکاران خودتان قرار دهید.میتوانید از داکر برای اجرای تستهای اتوماتیک و دستی در محیطهای شبیهسازی شده استفاده نمایید.
اجرا و مقیاسبندی واکنشگرا
پلتفرم کانتینتر محور داکر امکان پشتیبانی از حجمهای کاری پرتابل و قابل حمل را به شما میدهد. کانتینرهای داکر میتوانند روی لپتاپ برنامهنویس یا دستگاههای فیزیکی یا مجازی موجود در دیتا سنتر اجرا شوند. همچنین امکان اجرای کانتینرها روی سرورهای ابری یا مجموعهای از موارد بالا نیز وجود دارد. حجم سبک و پرتابل بودن داکر باعث شده که مدیریت حجمهای کاری بالا، مقیاس بندی یا تقسیم نرمافزارها و سرویسها به بخشهای کوچکتر خیلی ساده باشد.
اجرای حجم کاری بیشتر روی سیستم
داکر سریع و سبک است و به همین خاطر به عنوان یک جایگزین مناسب برای سیستمهای مجازی مبتنی بر هایپروایزر شناخته میشود. به همین خاطر میتوانید از بخش زیادی از ظرفیت سرور خودتان برای دستیابی به اهدافی که دارید استفاده نمایید. این پلتفرم برای کسب و کارهایی که تراکم بالایی دارند و باید با منابع سیستمی کمتر، فعالیتهای بیشتری را انجام دهند مناسب میباشد.
استفاده از دیتابیسهای زودگذر
احتمالا برای شما هم پیش آمده که به منظور اجرای یک نرم افزار به دیتابیس نیاز داشته باشید و یا بخواهید نرمافزارهای دیگری را تست نمایید که به دیتابیس نیاز دارند و شما دیتابیس موردنظر را روی سیستم خودتان ندارید. در گذشته لازم بود که دیتابیس مورد نیاز را روی سیستم خودتان اجرا نمایید و پس از آن اپلیکیشن را اجرا کنید اما در صورت استفاده از داکر فقط کافیست که کانتینر دیتابیس را روی سیستم اجرا کنید. به همین سادگی میتوانید به هر دیتابیسی دسترسی داشته باشید
ابزارهای یکبار مصرف و اجرای کامل دستههای نرمافزاری
یکی دیگر از کارهایی که احتمالا به عنوان یک برنامه نویس انجام دادهاید نصب نرمافزارهایی است که فقط یکبار از آنها استفاده میکنید. برای مثال ممکن است کلاینتی نصب کنید که فقط یکبار از آن برای دسترسی به یک دیتابیس قدیمی استفاده کرده باشید. خیلی از این ابزارها دارای کانتینر داکر هستند و میتوانید به همین منظور از آنها استفاده کنید. به این ترتیب نیازی به نصب نرمافزارهای یکبار مصرف نخواهید داشت.در صورتی که بخواهید نرمافزاری را اجرا کنید که به نرمافزار دیگری برای اجرا نیاز داشته باشد چکار میکنید؟ داکر با استفاده از Docker-Compose این امکان را در اختیار شما قرار میدهد. با کمک این ابزار شما میتوانید محیط کار مورد نظر خودتان را شبیهسازی نمایید.
امنیت داکر
در زمان اجرای نرم افزارهای مختلف در محیطهای مجازی یکی از چالشهای بسیار مهمی که وجود دارد امنیت است. این موضوع در مورد داکر نیز صدق میکند و امنسازی داکر از اهمیت بسیار بالایی برخوردار است. کانتینرهای داکر نسبت به ماشینهای مجازی دیگر از امنیت بالاتری برخوردار هستند و از طریق آنها میتوانید نرمافزار خودتان را به کامپوننتهای کوچکتری تقسیم نمایید. کامپوننتها از یکدیگر ایزوله هستند و به همین خاطر ریسک حملات مختلف را به شکل چشمگیری کاهش میدهند. در این روش هکرها به سیستم کامپیوتری شما دسترسی نخواهند داشت و به همین خاطر نفوذ به آن نیز سختتر خواهد بود.
معماری داکر
همانطور که گفته شد داکر براساس معماری کلاینت-سرور فعالیت میکند. کلاینت داکر وظیفه ارتباط با daemon را برعهده دارد و daemon نیز ساخت، اجرا و توزیع کانتینترهای داکر را انجام میدهد. کلاینت و Daemon را میتوانید به صورت همزمان روی یک سرور اجرا کنید و یا کلاینت را به صورت ریموت به daemon که روی سرور دیگری قرار دارد متصل نمایید. کلاینت و Daemon از طریق سوکتهای UNIX یا رابط شبکه و با استفاده از REST API با هم ارتباط برقرار میکنند. Docker Compose نیز یکی دیگر از کلاینتهای داکر است که با استفاده از آن میتوانید با اپلیکیشنهایی که از چند مجموعه کانتینر ایجاد شدهاند کار کنید.