0
06633425064

داکر چیست؟

Docker یک پروژه open surce برای خودکار سازی استقرار برنامه ها به عنوان کانتینرهای قابل حمل و دارای خودکفایی است که می توانند روی فضای ابری و یا در فضای محلی خود را اجرا کنند. Docker همچنین شرکتی است که این فناوری را با همکاری با فروشندگان cloud ، Linux و Windows از جمله مایکروسافت ، ترویج و تکامل می بخشد.

داکر.

کانتینرهای داکر می توانند در هر مکان و در محل مشتری ، در ارائه دهنده خدمات خارجی یا در cloud ، در azure اجرا شوند.

کانتینرهای تصویر Docker می توانند بصورت بومی روی Linux و Windows اجرا شوند.با این حال ، تصاویر ویندوز فقط می توانند روی هاست های ویندوز اجرا شوند و تصاویر لینوکس میتوانند روی هاست لینوکس و میزبان ویندوز اجرا شوند (با استفاده از Hyper-V Linux VM ، تاکنون) ، جایی که هاست به معنی سرور یا VM است.

توسعه دهندگان می توانند از محیط های توسعه در ویندوز ، لینوکس یا macOS استفاده کنند.در توسعه رایانه ، توسعه دهنده میزبان Docker را اجرا می کند که در آن تصاویر Docker مستقر می شود ، از جمله برنامه و وابستگی های آن توسعه دهندگان که روی لینوکس یا در MacOS کار می کنند از هاست Docker که مبتنی بر لینوکس است استفاده می کنند و می توانند فقط برای کانتینر لینوکس تصاویر ایجاد کنند.(توسعه دهندگان مشغول کار بر روی macOS می توانند کد را ویرایش کنند یا Docker CLI را از macOS اجرا کنند ، اما از زمان نوشتن این مقاله ، کانتینر به طور مستقیم روی macOS اجرا نمی شوند.)

توسعه دهندگان که روی ویندوز کار می کنند می توانند برای لینوکس یا ویندوز کانتینر ایجاد کنند.برای میزبانی کانتینر در محیط های توسعه و ارائه ابزارهای توسعه دهنده اضافی ، Docker Community Edition (CE) را برای Windows یا macOS ارائه می کند. این محصولات( VM میزبان Docker)  لازم را برای میزبانی کانتینر نصب می کنند.Docker همچنین

Docker Enterprise Edition (EE) را در اختیار شما قرار می دهد ، که برای توسعه شرکت طراحی شده است و توسط تیم های IT که در ساخت ، حمل و نقل و اجرای برنامه های مهم در تجارت استفاده می شوند ، استفاده می کنند.

برای اجرای Windows Containers ، دو نوع زمان اجرا وجود دارد:

۱٫کانتینرهای سرور ویندوز جداسازی برنامه را از طریق فناوری جداسازی فرایند و namespace  انجام می دهد. یک کانتینر ویندوز سرور یک هسته را با کانتینر میزبان و تمام کانتینرهای در حال اجرای روی میزبان به اشتراک می گذارد.

۲٫کانتینرهای Hyper-V با جداسازی هر کانتینر در یک ماشین مجازی بسیار بهینه ، بر روی جداسازی تهیه شده توسط کانتینرهای ویندوز سرور گسترش می یابند. در این پیکربندی ، هسته میزبان کانتینر با Hyper-V Containsers به اشتراک گذاشته نمی شود ، و این باعث جداسازی بهتر می شودتصاویر مربوط به این کانتینر به همان روش ایجاد شده و به همان شکل کار می کنند. تفاوت در نحوه ایجاد یک کانتینر از تصویری است که یک کانتینر Hyper-V به یک پارامتر اضافی نیاز دارد.

مقایسه کانتینر داکر با ماشین های مجازی

کانتینر داکر

ماشین مجازی

ماشین های مجازی

ذبلب

ماشین های مجازی شامل برنامه ، کتابخانه های مورد نیاز یا باینری ها و یک سیستم عامل کامل میهمان هستند. مجازی سازی کامل به منابع بیشتری نیاز دارد تا کانتینر کردن.

کانتینر شامل برنامه و تمام وابستگی های آن است. با این حال ، آنها هسته سیستم عامل را با سایر کانتینر به اشتراک می گذارند ، به عنوان فرآیندهای جدا شده در فضای کاربر روی سیستم عامل میزبان اجرا می شوند. (به جز در کانتینرهای Hyper-V ، که در آن هر ظرف درون یک ماشین مجازی مخصوص در هر ظرف قرار دارد.)

شکل ۲-۳ مقایسه ای بین کانتینر VM و Docker را نشان می دهد

 

شکل ۲-۳ مقایسه دستگاههای مجازی سنتی با کانتینر های داکربرای VM ها ، سه لایه پایه در سرور میزبان وجود دارد.

 از پایین به بالا: زیرساخت ها ، سیستم عامل هاست و یک Hypervisor و مهمتر از همه این که هر VM دارای سیستم عامل خاص خود و تمام کتابخانه های لازم است. برای داکر ، سرور میزبان فقط زیرساخت ها و سیستم عامل ها را در اختیار دارد و در بالای آن ، موتور کانتینر ، کانتینر را جدا کرده اما سرویس های پایه را به اشتراک می گذارد.از آنجا که کانتینر به منابع بسیار کمتری نیاز دارند (برای مثال ، آنها به سیستم عامل کامل احتیاج ندارند) ، استقرار آنها آسان است و سریع شروع می شوند. این به شما امکان می دهد پتانسیل بالاتری داشته باشید ، به این معنی که به شما امکان می دهد خدمات بیشتری را در همان واحد سخت افزاری اجرا کنید ، در نتیجه هزینه ها کاهش می یابد.

در این بخش اصطلاحات و تعاریفی را که باید با آنها آشنا شوید در داکر لیست می کند. 

تصویر کانتینر:

بسته ای با تمام وابستگی ها و اطلاعات مورد نیاز برای ایجاد یک کانتینر. یک تصویر شامل کلیه وابستگی ها (مانند چهارچوب ها) به علاوه پیکربندی استقرار و اجرا است که باید در زمان اجرا یک کانتینر استفاده شود. معمولاً یک تصویر از چندین تصویر پایه که لایه هایی در بالای یکدیگر انباشته شده اند تشکیل می شود تا سیستم پرونده کانتینر تشکیل شود. پس از ایجاد تصویر ، تغییر ناپذیر است.

  Dockerfile :

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

  Build:

عملکرد ساختن یک تصویر کانتینر بر اساس اطلاعات و زمینه ارائه شده توسط Dockerfile آن ، به علاوه فایل های اضافی در پوشه ای که تصویر در آن ساخته شده است. می توانید با دستور Docker build  تصاویر بسازید.

 کانتینر:

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

 Volume :

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

برچسب:

یک علامت یا لیبل است که می توانید برای تصاویر اعمال کنید تا تصاویر یا نسخه های مختلف با همان تصویر (بسته به شماره نسخه یا محیط هدف) شناسایی شوند. 

ساخت چند مرحله ای:

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

مخزن  :

repoمجموعه ای از تصاویر مربوط به Docker ، بابرچسب زده شده که نسخه تصویر را نشان می دهد. برخی از repos ها حاوی انواع مختلفی از یک تصویر خاص هستند ، مانند یک تصویر حاوی( SDK سنگین تر) ، تصویری که حاوی تنها زمان اجرا (سبک تر) و غیره است. این انواع با برچسب ها مشخص می شوند. یک repo واحد می تواند شامل انواع پلتفرم ، مانند تصویر لینوکس و تصویر ویندوز باشد.

 رجیستری:

خدماتی که دسترسی به مخازن را فراهم می کند. رجیستری پیش فرض بیشتر تصاویر عمومی Docker Hubمتعلق به Docker به عنوان یک سازمان است. یک رجیستری معمولاً شامل مخازن چند تیم است. شرکتها غالباً برای ذخیره و مدیریت تصاویری که ایجاد کرده اند ، دارای ثبت های خصوصی هستند. رجیستری Azure Container نمونه دیگری است.

تصویر چند قوس:

برای چند معماری ، ویژگی ای است که با توجه به سکویی که Docker در آن اجرا می شود ، انتخاب تصویر مناسب را ساده تر می کند ،وقتی یک Dockerfile از یک تصویر پایه درخواست می کند از FROM mcr.microsoft.com/dotnet/core/sdk:2.2از رجیستری که در واقع می شود۲٫۲-sdk-nanoserver-1709, 2.2-sdk-nanoserver-1803, 2.2-sdk-nanoserver-1809 یا۲٫۲-sdk-stretch ؛ بسته به سیستم عامل و نسخه ای که Docker در آن اجرا می شود.

   Docker Hub :

یک رجیستری عمومی برای بارگذاری تصاویر و کار با آنها. Docker Hub میزبان تصویر Docker ، ثبت های عمومی یا خصوصی ، ایجاد محرک ها و قلاب وب و ادغام با GitHub و Bitbucket را فراهم می کند. 

رجیستری  Azure Container:

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

Docker Trusted Registry (DTRer)  :

یک سرویس ثبت نام(Docker) است که می تواند در محل نصب شود بنابراین در درون مرکز داده و شبکه سازمان وجود دارد. این برای تصاویر خصوصی که باید در شرکت بکار گرفته شود مناسب است. Docker Trusted Registry به عنوان بخشی از محصول Docker Datacenter گنجانده شده است.

Docker Community Edition (CE):

ابزارهای توسعه Windows و macOS برای ساخت ، اجرا و آزمایش کانتینر محلی Docker CE برای ویندوز محیطهای توسعه را برای Linux و Windows Containers فراهم می کند. میزبان Linux Docker در ویندوز مبتنی بر یک ماشین مجازی Hyper-V است. میزبان Windows Containers بطور مستقیم مبتنی بر ویندوز است. Docker CE برای Mac مبتنی بر چارچوب Apple Hypervisor و xhyve hypervisorاست که یک ماشین مجازی میزبان لینوکس Docker را در Mac OS X فراهم می کند. Docker CE برای ویندوز و برای مک جایگزین جعبه ابزار Docker را می کند ، که مبتنی بر Oracle VirtualBox بود.

Docker Enterprise Edition (EE):

نسخه ای در مقیاس سازمانی از ابزارهای Docker برای توسعه لینوکس و ویندوز.

آهنگسازی:

یک ابزار خط فرمان و فرمت فایل YAML با ابرداده برای تعریف و اجرای برنامه های چند کانتینری است. شما یک برنامه کاربردی واحد را بر اساس چندین تصویر با یک یا چند پرونده تعریف می کنید که بسته به محیط می توانند مقادیر زیادی را نادیده بگیرند. بعد از ایجاد تعاریف ، می توانید کل برنامه چند کانتینر را با یک دستور واحد (docker-comppos up)  مستقر کنید که یک کانتینر را به ازای هر تصویر روی میزبان Docker ایجاد می کند.

Cluster :

مجموعه ای از میزبان Docker که در صورت قرار گرفتن یک میزبان مجازی Docker مجزا است ، به طوری که برنامه می تواند در چندین سرویس از چندین میزبان درون خوشه پخش شود. خوشه های Docker را می توان با Kubernetes ، Azure Service Fabric ، Docker Swarm و Mesosphere DC / OS ایجاد کرد.

 Orchestrator :

ابزاری که مدیریت خوشه ها و میزبان Docker را ساده می کند. Orchestrators به شما امکان می دهند تا تصاویر ، کانتینرو میزبان های خود را از طریق CLI یا UI گرافیکی مدیریت کنید. شما می توانید شبکه کانتینر ، تنظیمات ، load balancing ، کشف سرویس ، زیاد در دسترس بودن ، پیکربندی میزبان داکر و موارد دیگر را مدیریت کنید. Orchestrators وظیفه اجرا ، توزیع ، مقیاس گذاری و بهبود حجم کار را در مجموعه گره ها بر عهده دارد. به طور معمول ، محصولات Orchestrators همان محصولاتی هستند که زیر ساخت های خوشه ای مانند Kubernetes و پارچه آزور سرویس را از جمله سایر پیشنهادات موجود در بازار میدانند.

 
 

کانتینر داکر ، تصاویر و ثبت هاهنگام استفاده از Docker ، یک توسعه دهنده یک برنامه یا سرویس ایجاد می کند و بسته بندی آن و وابستگی های آن را به یک تصویر کانتینر می کند.

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

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

Docker یک ثبت عمومی را از طریق Docker Hub حفظ می کند. فروشندگان دیگر ثبت های مربوط به مجموعه های مختلف تصاویر ، از جمله رجیستری Azure Container را ارائه می دهند. از طرف دیگر ، شرکتها می توانند برای تصاویر Docker خود دارای یک رجیستری خصوصی باشند.

شکل ۲-۴ نشان می دهد که چگونه تصاویر و ثبت ها در Docker با دیگر مؤلفه ها ارتباط دارند. همچنین چندین رجیستری از فروشندگان را نشان می دهد. 

ابا

شکل ۲-۴٫ طبقه بندی اصطلاحات و مفاهیم داکر

 

رجیستری مانند قفسه کتاب است که در آن تصاویر ذخیره شده و در دسترس قرار می گیرد تا برای ساختن کانتینر برای اجرای سرویس ها یا برنامه های وب کشیده شود. ثبت نام های داکر خصوصی در محل و روی ابر عمومی وجود دارد.

Docker Hub: یک رجیستری عمومی است که توسط Docker نگهداری می شود ، در کنار Docker Trusted Registry یک راه حل درجه سازمانی ، Azure رجیستری Azure Container را ارائه می دهد.

AWS ، Google و دیگران نیز دارای ثبت نام های کانتینر هستند.قرار دادن تصاویر در رجیستری به شما امکان می دهد بیت های کاربردی ثابت و تغییر ناپذیر از جمله تمام وابستگی های آنها را در یک سطح چارچوب ذخیره کنید. سپس این تصاویر می توانند در محیط های مختلف نسخه بندی و مستقر شوند و بنابراین یک واحد استقرار مداوم را فراهم می کنند.

ثبت تصاویر خصوصی ، چه در محل یا در ابر میزبان باشد ، توصیه می شود که تصاویر شما به دلیل محرمانه بودن نباید به صورت عمومی به اشتراک گذاشته شوندشما می خواهید بین تصاویر و محیط استقرار انتخابی خود حداقل زمان تأخیر شبکه داشته باشید. به عنوان مثال ، اگر محیط تولید شما Cloud Azure است ، احتمالاً می خواهید تصاویر خود را در Regure Contureer Azure ذخیره کنید تا تأخیر شبکه به حداقل برسد. در یک روش مشابه ، اگر محیط تولید شما در فضای داخلی باشد ، ممکن است بخواهید یک رجیستری قابل اعتماد Docker در محل را در همان شبکه محلی در دسترس داشته باشید.

انتخاب بین چهارچوب  NET Core . و NET Framework.  برای کانتینر داکر دو قاب پشتیبانی برای ساخت برنامه های Docker  حاوی سرور باNET . وجود دارد:

NET Framework .و NET Core. آنها بسیاری از مؤلفه های پلت فرم دات نت را به اشتراک می گذارند ، و شما می توانید کد را در میان این دو به اشتراک بگذارید. با این حال ، تفاوت های اساسی بین آنها وجود دارد ، و اینکه چارچوبی که استفاده می کنید به آنچه شما می خواهید انجام دهید بستگی دارد.  

ارسال دیدگاه