نوشته‌ها

داکر ویندوز سرور ۲۰۱۶

یکی از محصولاتی که بصورت تخصصی در حوزه مجازی سازی در لایه سیستم عامل فعالیت می کند Docker  می باشد. یک محصول Open Source است که فرایند ایجاد ، توسعه و اجرا کردن Application ها با استفاده از Container ها که در قسمت OS Level Virtualization را بسیار ساده می کند.اگرچه فناوری کانتینر فناوری جدیدی محسوب نمی‌شود و قدمتی ده ساله دارد، اما با ظهور نرم‌افزار منبع باز داکر در ویندوز سرور ۲۰۱۶  کانتینرها یک‌باره از محبوبیت خاصی بهره‌مند شدند.

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

 

Docker  ابزاری است که هم به درد برنامه نویس ها می خورد و هم به درد مدیرهای شبکه. به همین خاطر هم برخی اوقات به نام DevOps از آن یاد می شود که ترکیبی از دو اسم Developer و Operations است. برای برنامه نویس ها Docker  به این معنا است که فقط روی کد نویسی خودتان تمرکز کنید. دغدغه اینکه کد شما قرار است بر روی چه سیستم عاملی با چه نیازمندی هایی نصب شود را نداشته باشید اینکار را Docker برای شما انجام می دهد. از طرفی هزاران برنامه و نرم افزار متنوع وجود دارند که برای کار کردن در محیط Docker طراحی شده اند و شما به عنوان یک حرفه ای می توانید به راحتی از آنها در مجموعه خودتان در قالب یک 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 را بصورت جداگانه امن کنید.