در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

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

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

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 صحبت خواهیم کرد. امیدوارم مورد توجه شما قرار گرفته باشد. ITPRO باشید

نویسنده : محمد نصیری

منبع : جزیره راهکارهای مجازی سازی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#داکر_چیست #docker_چگونه_کار_می_کند #os_level_virtualization_چیست #docker_container_چیست #مکانیزم_کاری_docker_چیست #docker_چیست #مفهوم_container_در_مجازی_سازی #مجازی_سازی_در_لایه_سیستم_عامل_چیست #software_container_چیست #مفهوم_docker_در_مجازی_سازی
12 نظر
محمود خوبانی زاد

سلام

با تشکر از آقای نصیری ...

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

محمد نصیری

فرض کنید یک نرم افزار در سیستم عامل لینوکس دارید ، این نرم افزار دارای فایل های DDL و Library های مختلف ، پیشنیازهای نصب و اجرا و ... هست ... با استفاده از Docker این رو یک پکیج می کنیم و علاوه بر این براش یک سیستم مجازی اختصاصی رو شبیه سازی می کنیم که تصور کنه که داره روی منابع اختصاصی سیستم عامل کار می کنه ، اینجوری می تونید N تا نرم افزار با همین روش ایجاد کنید ، در محیط های Cloud Computing شما می تونید از یک سرور حتی بصورت مجازی N عدد Docker یا Container بیرون بیارید و در منابع شما هم صرفه جویی میشه ...

بهروز   سیروس زاد

فوقالعاده بود ...

بهروز   سیروس زاد

اين موضوع تقريبا مانند Vpps روي esxi vcp 6 هست درسته

بهروز   سیروس زاد

اين موضوع تقريبا مانند Vpps روي esxi vcp 6 هست درسته

محمد نصیری

خیر VMware برای چنین راهکاری خودش OS تولید کرده به نام Photon که بتونه در این Level کار کنه .

محمد نصیری

vApps بحث مدیریت و گروه بندی سرورهای وابسته به هم رو انجام میده ، اونجا هم ESXi دارید و روشون VM دارید هایپروایزور هست.

بهروز   سیروس زاد

ممنون از راهنماييت و اطلاعات كاملت

سپسگزارم

پارسا یوسفی

در عملکرد مثل (LXC(Linux Countainers میمونه؟

مهندس نصیری عزیز ممنون از زحماتتون

MehrdadLinux

سلام

جمله

«Docker ابزاری است که هم به درد برنامه نویس ها می خورد و هم به درد مدیرهای شبکه و به همین خاطر هم برخی اوقات به نام DevOps از آن یاد می شود»

صحیح نیست

Docker و DevOps دو مفهوم جداگانه هستند

اینها هیچ وقت جای هم استفاده نمیشوند و به جای هم یاد نمیشوند

فکر کنم اگر ویرایش بشود و این قسمت جمله حذف شود بهتر است

موفق باشید

محمد نصیری

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

این نظر توسط UNITY در تاریخ يكشنبه, 9 مهر 1396 حذف شده است.

دلیل: لطفا در قالب ارسال سئوال جدید مطرح کنید سپاسگزارم

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....