این روزها صحبت داکر (Docker) در محافل فناوری داغ است و به احتمال زیاد از گوشه و کنار تعریفهای داکر به گوش شما خورده است. به همین منظور در ادامه قصد داریم با هم ببینیم داکر چیست و چرا اینقدر محبوبیت پیدا کرده است؟
حدود ۵ سال پیش فردی با نام سالامان هایکز (Solomon Hykes)، سازوکاری با نام داکر را راهاندازی کرد. هدف از این کار تعامل راحتتر با کانتینرها (Containers) بود. این ایده با موفقیت روبرو شد و در سال ۲۰۱۴ پس از انتشار داکر نسخه ۱.۰ شاهد افزایش محبوبیت آن بودیم.
در نتیجه شرکتها یکی پس از دیگری اپلیکیشنهای تحت سرور را به جای ماشینهای مجازی در بستر داکر راهاندازی کردند. جالب است بدانید چندین بانک بزرگ در زمانی که داکر هنوز در نسخه ۱.۰ به سر میبرد از این فناوری کمک گرفتند که این امر برای فناوری که در نسخه اولیه قرار دارد از امنیت بالای داکر حکایت میکند.
این روزها داکر و Moby که به عنوان مجموعه بالاسری داکر شناخته میشود، مخاطبین بسیار زیادی جذب کرده و بنا به گزارش داکر چیزی بیشتر از ۳.۵ اپلیکیشن در کانتینرها از طریق فناوری داکر قرار دارند و بیشتر از ۳.۷ میلیارد اپلیکیشن از این طریق دانلود شده است.
این موارد باعث شده است بزرگانی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کنند و در حال حاضر تقریباً تمامی بزرگان حاضر در بستر رایانش ابری به نوعی از داکر استفاده میکنند.
داکر چیست ؟
اگر با مجازیسازی آشنا باشید حتماً به خوبی میدانید سازوکارهای این کار مانند Hyper-V, KVM و Xen، سختافزار را به صورت مجازی در اختیار مدیران شبکه قرار میدهند. در نتیجه این سازوکارها نیازمند منابع سختافزاری قوی هستند.
از طرف دیگر کانتینرها از سیستمعاملهای به اشتراکگذاری شده بهره میگیرند. در نتیجه با روش کارآمدتری طرف هستیم که منابع سیستم را بهینهتر استفاده میکند. بر خلاف مجازیسازی سختافزار، کانتینرها بر بالای یک اینستنس (Instance) لینوکس قرار میگیرند و فضایی کوچک و جمعوجور را برای اپلیکیشنهای فراهم میکنند.
به لطف این ویژگی چیزی حدود ۴ تا ۶ برابر اینستنس بیشتری نسبت به فناوری Xen یا KVM VM بر روی یک سختافزار واحد اجرا میشود. از طرف دیگر کانتینرها به توسعه دهندگان کمک میکنند تا کدهای خود را داخل یک مخزن مشترک قرار دهند. این امر فرآیند کدنویسی را سرعت میبخشد و کدها عملکرد بهتری خواهند داشت.
داکر توسعهدهندگان را قادر میسازد تا اپلیکیشنهای خود را راحت و سریع با حجم کمتری به صورت قابل حمل و پرتابل در یک کانتینر قرار دهند. این اپلیکیشنهابه صورت مجازی از هر جایی قابل اجرا هستند.
این فرآیند از طریق مجزا کردن کدها در داخل یک کانتینر واحد انجام میشود. کاملاً مشخص است چنین کاری بهینهسازی و آپدیت برنامه را سادهتر میکند. از آنجایی که شرکتهای فعال در عرصه فناوری به دنبال راههای بیشتری برای ساخت اپلیکشنهای پرتابل میگردند داکر روزبهروز طرفداران جدیدی پیدا میکند.
در این بین اگر با گیتهاب آشنا باشید حتماً به خوبی میدانید که این بستر شرایط همکاری برای بهاشتراک گذاشتن کدها میان توسعهدهندگان را فراهم کرده است. از این لحاظ میتوان داکر را به نوعی شبیه به گیتهاب دانست چرا که مخزن رسمی گیتهاب به شرکتهای تجاری کمک میکند تا نرمافزارهای خود را بهینهتر کرده و اجرا و مدیریت آنها را ارتقا دهند.
از طرف دیگر کانتینرهای داکر به راحتی در فضای رایانش ابری قرار میگیرد و به نوعی طراحی شده که تقریباً تمامی اپلیکشنهایی که از متدولوژی دواپس (DevOps) بهره میگیرند با داکر تعامل داشته باشند.
داکر محیطی لوکال را برای توسعه فراهم میکند که این محیط دقیقاً عملکرد یک سرور را در اختیار توسعهدهندگان قرار میدهد. این امر برای روش توسعه CI/CD کاربرد زیادی دارد. از این طریق میتوان چندین محیط توسعه را از یک هاست مشخص با یک نرمافزار، سیستمعامل و تنظیمات واحد اجرا کرد.
از طرف دیگر پروژه را میتوان روی چند سرور جدید و مختلف آزمایش کرد و تمامی اعضای گروه بر روی یک پروژه واحد با تنظیمات همانند قادر به همکاری هستند. این کار توسعهدهندگان را قادر میسازد تا نسخههای جدید برنامه خود را به سرعت آزمایش کرده و از عملکرد صحیح آن اطمینان خاطر حاصل کنند.
اگر از قدیمیهای دنیای کامپیوتر باشید به احتمال زیاد FreeBSD Jail که در اواخر سال ۲۰۰۰ استفاده میشد را به خاطر دارید. جالب است بدانید سابقه کانتینرها به همان دوران باز میگردد. اوراکل نیز مفهوم خاص خودش را از کانتینرها داشت که با نام Zones شناخته میشد.
با این حساب میتوان گفت توسعهدهندگان احتمال دارد تاکنون حتی بدون اینکه بدانند از کانتینرها کمک گرفته باشند. برای نمونه هر زمان که از یکی از سرویسهای گوگل مانند جیمیل و گوگل داکس استفاده میکنید عملاً یک کانتینر جدید برای شما ایجاد شده است.
داکر روی LXC سوار میشود و همانند سایر کانتینرها به فایلهای سیستمی، فضای ذخیرهسازی، پردازنده، رم و دیگر منابع به صورت اختصاصی دسترسی دارد. به این ترتیب میتوان تفاوت اصلی میان کانتینرها و ماشینهای مجازی (VM)، را در این دانست که وقتی هایپروایزر (Hypervisor) به صورت انتزاعی تمام یک سیستم را ایجاد میکند، کانتینرها تنها به صورت انتزاعی کرنل سیستمعامل را ایجاد میکنند.
این امر میلیونها دلار صرفهجویی را برای شرکتهای ارائهدهنده خدمات رایانشابری به دنبال دارد و به همین دلیل است که غولهای فناوری به سرعت به سمت داکر پیش رفتهاند.
داکر ارمغانهای جدیدی در اختیار شرکتها قرار داد که پیش از این شاهد آنها نبودیم. در این زمینه میتوان به سادهسازی اجرا و استفاده آن اشاره کرد. از طرف دیگر داکر با کانتینرهای دیگری از کنونیکال، گوگل و ردهت همکاری دارد و در نتیجه استانداردسازی خوبی را برای کانتینرها شاهد هستیم.
داکر همچنان به استاندارد سازی ادامه داده و از آنجایی که عملاً این روزها نمیتوان رقیبی برای داکر متصور شد میتوان آن را روی هر سیستمعاملی اجرا کرد و در نتیجه استانداردسازی مطلوبی را برای داکر شاهد هستیم.
تمامی زیرساختهای IT نیازمند مدیریت و نظارت هستند و در همین راستا کانتینرها نیز باید مانیتور شوند و در حالت کنترلشدهای قرار بگیرند. درغیر این صورت مشخص نخواهد شد سرور چه برنامههایی را اجرا میکند.
خوشبختانه از برنامههای دواپس میتوان برای مانیتور کانتینرهای داکر کمک گرفت، اما به این نکته نیز باید اشاره کرد که این برنامهها برای کانتینرها بهینه نشدهاند. اینجاست که باید سراغ ابزارهای مدیریت و نظارت رایانش ابری را بگیرید.
ابزارهایی مانند Docker Swarm, Kubernetes و Mesosphere در این زمینه گزینههای خوبی بهنظر میرسند و تجربه نشان داده است در بین این ابزارها Kubernetes محبوبیت بیشتری پیدا کرده است.