محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

داکر چیست؟ بررسی مکانیزم کاری Docker به زبان بسیار ساده

Docker چیست؟ Docker چگونه کار می کند؟ قبلا در توسینسو در خصوص مفهومی به نام OS Level Virtualization با هم صحبت کرده ایم ، امروز می خواهیم در خصوص یکی از محصولاتی که بصورت تخصصی در حوزه مجازی سازی در لایه سیستم عامل فعالیت می کند صحبت کنیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

بصورت کلی Docker یک محصول Open Source است که فرایند ایجاد ، توسعه و اجرا کردن Application ها با استفاده از Container ها که در قسمت OS Level Virtualization در خصوص آنها توضیح دادیم را بسیار ساده می کند.Container ها به یک برنامه نویس این اجازه را می دهد که application خود را با تمامی اجزای مورد نیاز آن اعم از فایل های dll و کلیه library ها ، کلیه وابستگی ها در قالب یک بسته نرم افزاری بیرون بدهد به شکلی که از بیرون یک نرم افزار واحد به نظر برسد.

کاملترین دوره آموزش داکر (Docker) صفر تا صد

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

Docker چیست ؟

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

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

یکی از مهمترین فاکتورهایی که Docker دارد Open Source بودن آن است. این یعنی هر کسی می تواند Docker را تهیه و سورس آن را تغییر بدهد و یک محصول جدید معرفی کند و یا اینکه قابلیت های جدیدی به آن اضافه کند که تا به حال بر روی آن وجود نداشته است. البته اگر چنین کاری در ایران انجام شود فکر می کنم به نام مجازی ساز بومی تمام ایرانی معرفی شود ( عادت داریم از این کارا بکنیم D: )

Docker چیست

Docker به درد چه کسانی می خورد؟

Docker ابزاری است که هم به درد برنامه نویس ها می خورد و هم به درد مدیرهای شبکه و به همین خاطر هم برخی اوقات به نام DevOps از آن یاد می شود که ترکیبی از دو اسم Developer و Operations است. برای برنامه نویس ها Docker به این معنا است که فقط روی کد نویسی خودتان تمرکز کنید و دغدغه اینکه کد شما قرار است بر روی چه سیستم عاملی با چه نیازمندی هایی نصب شود را نداشته باشید اینکار را Docker برای شما انجام می دهد.

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

مکانیزم کاری Docker چگونه است؟

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

برای مثال قابلیت های cgroups و kernel namespaces از جمله مواردی هستند که Docker از انها برای کار خودش استفاده می کند. قابلیتی مثل kernel namespace باعث می شود که application ها هیچ دیدی از محیطی که در آن اجرا می شوند نداشته باشند که این موارد شامل process tree ها ، شبکه ، ID های کاربران و حتی فایل سیستم های mount شده نیز می شود ، از طرفی قابلیتی مثل cgroups محدودیت های دسترسی به منابع CPU و RAM و I/O و شبکه را ایجاد می کند.

Docker در محیط های اشتراکی یا Shared Environment امنیت را نیز برای نرم افزارها ما به ارمغان می آورد. اما به عنوان یک مکانیزم امنیتی شناخته نمی شود.شما به عنوان یک برنامه نویس یا شبکه کار بایستی سیستم عامل Docker را بصورت جداگانه امن کنید. در مطالب دیگر بصورت ریزتری در خصوص Docker صحبت خواهیم کرد. امیدوارم مورد توجه شما قرار گرفته باشد.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات