پرووید
پرووید
خواندن ۴ دقیقه·۳ سال پیش

بررسی Container ها و Image ها و Registry ها در داکر

با یک درس جدید از سری آموزش رایگان داکر و موضوعات مربوط به Containerized کردن اپلیکیشن ها در Net Core. در خدمت شما هستیم. امیدواریم که تا به اینجا یک کار از این آموزش لذت برده باشید و مشتاق ادامه کار باشید. در این قسمت قرار است در رابطه با Container ها و Image ها و Registry ها در داکر و موضوعات مربوط به هر کدام به طور مفصل تری صحبت کنیم.

بررسی Container ها و Image ها و Registry ها در داکر

تا به اینجای کار دانسته ایم که زمانی که از یک داکر استفاده می‌کنیم در واقع یک اپلیکیشن و یا سرویس به همراه تمامی Dependency های آن در قالب یک Image Container بسته‌بندی و یا Package می‌شوند. در واقع یک Image یک نمایش Static از یک اپلیکیشن و یا سرویس به همراه تمامی Dependency ها و پیکربندی های منحصر به فرد خود است.

به منظور اجرا کردن یک اپلیکیشن و یا یک سرویس، پس از ایجاد کردن یک Container Image می بایست آن Image را اصطلاحاً Instantiate و یا نمونه سازی کرده و یک Container جدید ایجاد کنیم. این Container بر روی Docker Host و یا سیستمی که میزبانی داکر را به عهده دارد اجرا خواهد شد. Container ها در ابتدا در Development Environment و یا سیستم محلی برنامه‌نویس تست خواهند شد. ضمنا ذکر این نکته ضروری است که برنامه نویسان می بایستی Image ها را در یک رجیستری ذخیره کنند. در واقع یک رجیستری شبیه به یک کتابخانه از Image ها عمل می کند و به منظور deploy کردن برنامه به Production Orchestrator ها به آن نیاز داریم. داکر یک Public Registry را با استفاده از Docker Hub مدیریت می کند. دیگر کمپانی‌ها نیز رجیستری های خاص خود را به منظور فراهم کردن مجموعه ای از Image ها در اختیار ما قرار می دهند. برای مثال Azure Container Registry یکی از این نمونه‌ها است. علاوه بر این موضوع بسیاری از شرکت‌های بزرگ می توانند رجیستری های Private خود را داشته باشند و Docker Image های منحصر به فرد خود را مدیریت کنند.

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

به بیان ساده یک Registry شبیه به قفسه کتاب عمل می کند که در آن Image ها ذخیره شده و می‌توانند به منظور ایجاد کردن Container ها و اجرا کردن سرویس ها و اپلیکیشن ها، مورد استفاده قرار بگیرند. رجیستری های خصوصی و عمومی بر روی Cloud و یا on-premise نیز وجود دارند. Docker Hub یک Public Registry است که توسط کمپانی داکر مدیریت می شود. علاوه بر این Docker Trusted Registry نیز یکی دیگر از رجیستری هایی است که در سطح تجاری از آن استفاده می‌شود. علاوه بر این موضوع Azure نیز با ارائه دادن Azure Container Registry به جمع ارائه دهندگان رجستری ها پا نهاده است. AWS و Google نیز جزء دیگر کمپانی هایی هستند که Container Registry در اختیار ما قرار می‌دهند.

با استفاده از رجیستری ها شما می توانید Image ها را به صورت اجزای تشکیل دهنده غیر قابل تغییر و استاتیک برنامه‌ها ذخیره کنید. یک Image شامل تمامی dependency ها و دیگر فریم ورک های مربوط به اجرا شدن برنامه می باشد. علاوه بر این موضوع امکان ورژن بندی کردن Image ها و سپس deploy کردن آنها در Environment های مختلف و در نهایت فراهم کردن یک deployment unit یک شکل و Consistent نیز وجود دارد.

رجیستری هایی که به صورت Private و یا خصوصی کار می کنند که یا در Cloud و یا On-premise قرار می‌گیرند در شرایط زیر مورد استفاده قرار خواهند گرفت:

  1. زمانی که Image ها نباید به صورت عمومی و یا Public، به دلایل امنیتی در دسترس عموم قرار بگیرند، از رجیستری های Private استفاده می‌کنیم.
  2. زمانی که میخواهیم Network Latency را به حداقل برسانیم و Image ها با سرعت زیادی برروی Deployment Environment قرار بگیرند، از رجیستری های خصوصی استفاده می کنیم. برای مثال اگر Production Environment شما Azure Cloud است، احتمالاً نیاز دارید که Image های خود را در Azure Container Registry قرار بدهید تا Network Latency به حداقل برسد. به طور مشابه اگر Production Environment شما On-premise می باشد، ممکن است بخواهید که از Docker Trusted Registry به صورت On-Premise استفاده کنید تا در قالب شبکه محلی خود، با حداقل Network Latency از Image ها استفاده نمایید.

منبع: وبسایت پرووید

سبک معماری مایکروسرویس ها (Microservices Architectureسبک ها و معماری های توسعه نرم افزار (SOFTWARE DEVELOPMENT METHODOLOGIES)container ها و image ها در داکر
شاید از این پست‌ها خوشتان بیاید