راهنمای داکر برای تازهکارها: کلمات کلیدی در Docker
مطلب پیشرو در ادامه نوشته قبلی با عنوان «راهنمای داکر برای تازهکارها: Docker چیست؟» آمده. پیشنهاد میکنم بخوانید.
Docker Engine
موتور محرکه داکر، لایهایست که داکر روی آن اجرا میشود و وظیفه آن مدیریت کانتینر ها، ایمجها، بیلد کردن و… است. این لایه درست بالای سیستمعامل ماشین میزبان قرار میگیرد و از طریق دریافت دستورات از کلاینت(مثلا ترمینال) به وظیفه خودش عمل میکند.
Dockerfile
داکر فایل جاییست که دستورالعملهای لازم برای ساخت ایمج در آن نوشته میشه. اگر نگاهی به داکرفایلهای موجود بزنید نمونه دستوارتی مثل RUN apt-get install something
را خواهید دید؛ دستوراتی که توسط آنها میتوانیم پکیجهای لازم برای اجرای نرمافزار رو در محیط ایزولهی کانتینر نصب کنیم، پورت اختصاص بدیم و یا دایرکتوریها را تعریف کنیم.
نمونه داکرفایل :
Image
ایمجها قالبهای فقط خواندنی هستند که از طریق دستورالعملهایی که در داکر فایل نوشته شده به وجود میآیند.
Container
با استفاده از ایمجها کانتینرها ساخته میشوند. کانتینر با به وجود آوردن یک فضای ایزوله هر آنچه که اپلیکیشن برای اجرا نیاز دارد ( از سیستم عامل گرفته تا کتابخانههای سیستمی و کد اپ ) را فراهم میکند. با ساخته شدن کانتینر، داکر یک اینترفیس برای نتورک میسازد تا کانتینر بتواند با لوکالهاست ارتباط برقرار کند، آیپی اختصاص دهد و… .
برای درک بهتر رابطه ایمج و کانتینر میشه از شیگرایی کمک گرفت. اگر ایمج را کلاس در نظر بگیریم، کانتینر در واقع آبجکتیست که از این کلاس مقداردهی اولیه میشه. از یک ایمج میتوان صدها کانتینر ساخت.
Volume
ولیوم (Volume) را میتونیم دیسکی مجازی بدونیم. این بخش از کانتینر، از دیتای کانتینر نگهداری کرده و آن را به اشتراک میگذارد(بین کانتینر و هاست یا بین چند کانتینر).
دو نوع اصلی ولیوم داریم:
الف. ماندگار: دادهها به صورت طبیعی در فایل سیستم ماشین میزبان نگهداری میشه. پس در صورت تخریب، آپدیت و بیلد مجدد کانتینر، این بخش از دیتا، دستنخورده باقیمیماند.
ب. بیدوام: در این نوع، دادهها در کانتینر به وجود آمده با دیگر کانتینترها به اشتراک گذاشته شده و تا زمانی که کانتینرها از آنها استفاده میکنند، وجود دارند ولی به محض از بین رفتن کانتینرها، آن بخش از دیتا هم از بین میره.
Union File System
و اما جذابترین بخش مربوط به داکر، استفاده از فایل سیستم یونینه. قبل از هر چیزی لازمه بدونیم یونین فایل سیستم چیه. در UnionFS دایرکتوریها و فایلها – که از فایل سیستمهای جداگانه در برنچها (Branch) گروهبندی میشوند- اجازه پیدا میکنند با روی هم قرار گرفتنشان یک فایل سیستم منسجم رو شکل بدهند. و این یعنی محتوای دایرکتوری ها با مسیرهای مشابه در برنچهای مختلف با هم – روی هم – ادغام میشوند.
تصویر زیر از داکیومنت داکر استخراج شده.
داکر هم از همین خصیصه برای ساختار لایهای ایمجها استفاده کرده. (هر دستور العمل در ایمج یک لایه را تشکیل میده که روی لایههای زیرین میآید) بنابراین وقتی در یک ایمج یک لایه مشخص نیاز به اصلاح داره، یک کپی از لایه ساخته میشه و اصلاحات روی اون انجام میشه نه لایه اصلی و در نهایت همه اینها با انباشه شدن روی همدیگر در اختیار کانتینر قرار میگیرند.
بد نیست بدونید به این عمل [COW [Copy On Write میگن.
با همین خصیصه هنگام ساختن کانتینر جدید از یک ایمج دیگر نیاز نیست مجددا همه فایلها کپی بشن بلکه یک پوینتر به محل اصلی خواهند داشت، پس عملیات مقداردهی کانتینر به سرعت و با کمترین هزینه انجام میشه.
از طرف دیگر وقتی یک ایمج رو تغییر میدهید داکر تنها تغییرات اون لایه مشخص رو آپدیت میکنه و به همین خاطر سرعت عمل بالاتری داره.
در پست بعدی که احتمالا آخرین پست از این مجموعه هست به صورت تمرینی به «تعریف داکرفایل، ساخت ایمج و راهاندازی کانتینر» میپردازیم.
دیدگاهها