آموزش ها و ترفتد هامقالات

Docker چیست؟

حدود 6 سال پیش فردی با نام سالامان هایکز (Solomon Hykes)، سازوکاری با نام داکر را راه‌اندازی کرد. هدف از این کار تعامل راحت‌تر با کانتاینرها (Containers) بود. این ایده با موفقیت روبرو شد و در سال 2014 پس از انتشار داکر نسخه 1.0 شاهد افزایش محبوبیت آن بودیم.

در نتیجه شرکت‌ها یکی پس از دیگری اپلیکیشن‌های تحت سرور را به جای ماشین‌های مجازی در بستر داکر راه‌اندازی کردند. جالب است بدانید چندین بانک بزرگ در زمانی که داکر هنوز در نسخه 1.0 به سر می‌برد از این فناوری کمک گرفتند که این امر برای فناوری که در نسخه اولیه قرار دارد از امنیت بالای داکر حکایت می‌کند.

این روزها داکر و Moby که به عنوان مجموعه بالاسری داکر شناخته می‌شود، مخاطبین بسیار زیادی جذب کرده و بنا به گزارش داکر چیزی بیشتر از 3.5 اپلیکیشن در کانتاینرها از طریق فناوری داکر قرار دارند و بیشتر از 3.7 میلیارد اپلیکیشن از این طریق دانلود شده است.

این موارد باعث شده است بزرگانی مانند ردهت، کنونیکال، اوراکل و مایکروسافت نیز به استفاده از داکر گرایش پیدا کنند و در حال حاضر تقریباً تمامی بزرگان حاضر در بستر رایانش ابری به نوعی از داکر استفاده می‌کنند.

داکر (Docker) چیست؟

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

داکر هیچ سیستم عامل جدیدی ایجاد نمی کند بلکه این امکان را به بسته نرم افزاری ایجاد شده می دهد که از Kernel اصلی سیستم عاملی که بر روی آن نصب شده است استفاده نماید و در زمان انتقال نیز فقط Package نرم افزاری منتقل می شود نه ماشین مجازی ، در واقع Docker Engine یا موتور اصلی Docker جایگزین نرم افزار Hypervisor می شود و اینکار باعث می گردد که کارایی سیستم ما به شدت افزایش یابد زیرا یک لایه واسط به نام Hypervisor حذف شده و نرم افزار بصورت مستقیم با هسته اصلی سیستم عامل کار میکند با این تفاوت که کاملا ایزوله شده است.

یکی از مهمترین فاکتورهایی که Docker دارد Open Source بودن آن است. متن باز بودن بدین معنی میباشد که هر کسی می تواند Docker را تهیه و سورس آن را تغییر بدهد و یک محصول جدید معرفی کند و یا اینکه قابلیت های جدیدی به آن اضافه کند که تا به حال بر روی آن وجود نداشته است. شما می توانید Docker Container های مختلفی بر روی یک سیستم پیاده سازی کرده ، بطوریکه تمامی آنها در یک فضای ایزوله شده قرار داشته و از سیستم میزبان هم مجزا باشند. با استفاده از این پلتفرم، می توانید کل چرخه ی توسعه، تست، توزیع و مدیریت را با استفاده از رابط کاربری مستحکم طراحی کنید.

داکر امکانی را فراهم آورده است که پروسه‌ها و نرم‌افزارها به صورت مجزا در محیط کاملا ایزوله‌ای بر روی کرنل لینوکس راه‌اندازی شود که به این محیط و بسته‌ی ایزوله، کانتاینر (Container) می‌گویند.

کانتاینر این امکان را برای برنامه نویسان و توسعه دهندگان اپلیکیشن ها فراهم می کند تا یک برنامه را با تمام ماژول ها و کامپوننت‌های وابسته آن ( مانند کتابخانه ها ، توابع و … ) یکی کرده و به صورت یک پکیج درآورده تا آن برنامه تولید شده در پلتفرم ها و سیستمهای مختلف بدون مشکل اجرا شود، در حقیقت بدون نگرانی از تنظیمات و وابستگیهای یک Application خاص در پلتفرم های دیگر، آن برنامه در هر محیطی اجرا شود.

داکر که در بالا به آن اشاره شد وظیفه مدیریت کانتاینرها را به عهده دارد و بیشتر شبیه یک ماشین مجازی عمل میکند، تفاوت داکر با ماشین مجازی در این است که در VM (یا ماشین مجازی) برای اجرای اپلیکیشن و برنامه های مختلف که بخواهیم به صورت ایزوله و مجزا از هم کار کنند باید VM های مختلف ساخته شود که همین موضوع بار پردازشی و هدر رفت منابع سیستمی را روی سرور به همراه دارد.

ولی در Docker روی یک VM خاص که میتواند دارای سیستم عامل ویندوز یا لینوکس باشد، ماژول داکر نصب شده و سپس روی سرویس داکر، کانتاینرهای مختلف حاوی برنامه ها و اپلیکیشن های مختلف نصب و اجرا می‌شوند بدون اینکه کانتاینرها به هم دسترسی داشته باشند. بدین صورت کانتاینرها از هم ایزوله هستند و نیاز ما برای ایجاد چندین VM را مرتفع میسازند.

به چه دلیل داکر محبوب است؟

اگر با مجازی‌سازی آشنا باشید حتماً به خوبی می‌دانید سازوکارهای این کار مانند Hyper-V, KVM و Xen، سخت‌افزار را به صورت مجازی در اختیار مدیران شبکه قرار می‌دهند. در نتیجه این سازوکارها نیازمند منابع سخت‌افزاری قوی هستند.

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

به لطف این ویژگی‌ چیزی حدود 4 تا 6 برابر اینستنس‌ بیشتری نسبت به فناوری Xen یا KVM VM بر روی یک سخت‌افزار واحد اجرا می‌شود. از طرف دیگر کانتاینرها به توسعه‌ دهندگان کمک می‌کنند تا کدهای خود را داخل یک مخزن مشترک قرار دهند. این امر فرآیند کدنویسی را سرعت می‌بخشد و کدها عملکرد بهتری خواهند داشت.

داکر توسعه‌دهندگان را قادر می‌سازد تا اپلیکیشن‌های خود را راحت و سریع با حجم کمتری به صورت قابل حمل و پرتابل در یک کانتاینر قرار دهند. این اپلیکیشن‌هابه صورت مجازی از هر جایی قابل اجرا هستند.

VMs vs docker - Docker چیست؟
مقایسه کانتاینر با ماشین مجازی

این فرآیند از طریق مجزا کردن کدها در داخل یک کانتاینر واحد انجام می‌شود. کاملاً مشخص است چنین کاری بهینه‌سازی و آپدیت برنامه را ساده‌تر می‌کند. از آنجایی که شرکت‌های فعال در عرصه فناوری به دنبال راه‌های بیشتری برای ساخت اپلیکشن‌های پرتابل می‌گردند داکر روز‌‌به‌روز طرفداران جدیدی پیدا می‌‌کند.

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

از طرف دیگر کانتاینرهای داکر به راحتی در فضای رایانش ابری قرار می‌گیرد و به نوعی طراحی شده که تقریباً تمامی اپلیکشن‌هایی که از متدولوژی دواپس (DevOps) بهره می‌گیرند با داکر تعامل داشته باشند.

داکر محیطی لوکال را برای توسعه فراهم می‌کند که این محیط دقیقاً عمل‌کرد یک سرور را در اختیار توسعه‌دهندگان قرار می‌دهد. این امر برای روش توسعه CI/CD کاربرد زیادی دارد. از این طریق می‌توان چندین محیط توسعه را از یک هاست مشخص با یک نرم‌افزار، سیستم‌عامل و تنظیمات واحد اجرا کرد.

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

تاریخچه کانتاینرها و شکل گیری داکر

اگر از قدیمی‌های دنیای کامپیوتر باشید به احتمال زیاد FreeBSD Jail که در اواخر سال ۲۰۰۰ استفاده می‌شد را به خاطر دارید. جالب است بدانید سابقه کانتاینرها به همان دوران باز می‌گردد. اوراکل نیز مفهوم خاص خودش را از کانتاینرها داشت که با نام Zones شناخته میشد.

با این حساب می‌توان گفت توسعه‌دهندگان احتمال دارد تاکنون حتی بدون اینکه بدانند از کانتاینرها کمک گرفته باشند. برای نمونه هر زمان که از یکی از سرویس‌های گوگل مانند جیمیل و گوگل داکس استفاده می‌کنید عملاً یک کانتاینر جدید برای شما ایجاد شده است.

داکر روی LXC سوار می‌شود و همانند سایر کانتاینرها به فایل‌های سیستمی، فضای ذخیره‌سازی، پردازنده، رم و دیگر منابع به صورت اختصاصی دسترسی دارد. به این ترتیب می‌توان تفاوت اصلی میان کانتاینرها و ماشین‌های مجازی (VM)‌، را در این دانست که وقتی هایپروایزر (Hypervisor) به صورت انتزاعی تمام یک سیستم را ایجاد می‌کند، کانتاینرها تنها به صورت انتزاعی کرنل سیستم‌عامل را ایجاد می‌کنند.

این امر میلیون‌ها دلار صرفه‌جویی را برای شرکت‌های ارائه‌دهنده خدمات رایانش‌ابری به دنبال دارد و به همین دلیل است که غول‌های فناوری به سرعت به سمت داکر پیش رفته‌اند.

استانداردسازی کانتاینرها

داکر ارمغان‌‌های جدیدی در اختیار شرکت‌ها قرار داد که پیش از این شاهد آن‌ها نبودیم. در این زمینه می‌توان به ساده‌سازی اجرا و استفاده آن اشاره کرد. از طرف دیگر داکر با کانتاینرهای دیگری از کنونیکال، گوگل و ردهت همکاری دارد و در نتیجه استانداردسازی خوبی را برای کانتاینرها شاهد هستیم.

داکر همچنان به استاندارد سازی ادامه داده و از آنجایی که عملاً این روزها نمی‌توان رقیبی برای داکر متصور شد می‌توان آن را روی هر سیستم‌عاملی اجرا کرد و در نتیجه استانداردسازی مطلوبی را برای داکر شاهد هستیم.

نظارت و مدیریت کانتاینرها

تمامی زیرساخت‌های IT نیازمند مدیریت و نظارت هستند و در همین راستا کانتاینرها نیز باید مانیتور شوند و در حالت کنترل‌شده‌ای قرار بگیرند. درغیر این‌ صورت مشخص نخواهد شد سرور چه برنامه‌هایی را اجرا می‌کند.

خوشبختانه از برنامه‌های دواپس می‌توان برای مانیتور کانتاینرهای داکر کمک گرفت، اما به این نکته نیز باید اشاره کرد که این برنامه‌ها برای کانتاینرها بهینه‌ نشده‌اند. اینجاست که باید سراغ ابزارهای مدیریت و نظارت رایانش ابری را بگیرید.

ابزارهایی مانند Docker Swarm, Kubernetes و Mesosphere در این زمینه گزینه‌های خوبی به‌نظر می‌رسند و تجربه نشان داده است در بین این ابزارها Kubernetes محبوبیت بیشتری پیدا کرده است.

و در پایان

همان‌گونه که در بالا هم اشاره شد داکر اجازه اجرای اپلیکیشن‌های بیشتری را نسبت به سایر تکنولوژی‌ها با یک سخت‌افزار مشخص می‌دهد و این امر ساخت و مدیریت اپلیکیشن‌ها را ساده‌تر می‌کند.

در پایان پیشنهاد می‌کنیم اگر شما هم به فناوری‌های جدید علاقه‌ دارید و تاکنون از داکر استفاده کرده‌اید. در قسمت نظرات ما و سایر کاربران را در جریان تجربه‌های مفید خود قرار دهید.

در پست بعدی از سیمیکالن مگ آموزش نصب رایگان داکر روی سرور مجازی, اختصاصی و همچنین سرویس های ابری قرار خواهد گرفت.

Docker چیست؟
4.5 (90%) 2 vote[s]

برچسب ها

مدیریت سایت

دانشجوی فناوری اطلاعات و ارتباطات و مدیر چندین سایت بزرگ در ایران هستم. عاشق زیبای ها, طراحی و توسعه تجربه کاربری و علاقه زیادی به یاد گیری مطالب جدید دارم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن