چرا سکان آکادمی؟
آشنایی با زیرساخت تکنولوژی در داکر

آشنایی با زیرساخت تکنولوژی در داکر

⚠️ خواندن و درک بهتر این بخش به دانش پایه ای در لینوکس نیاز دارد. در صورتی که این دانش را ندارید می توانید از این بخش عبور کنید.

داکر با زبان برنامه نویسی Go نوشته شده است و از تعداد زیادی از قابلیت های مفید در کرنل لینوکس بهره می­برد تا عملکردهای زیر را ارائه بدهد.

Namespaces

داکر از تکنولوژی به نام Namespaces برای جدا کردن کانتینرها استفاده می ­کند. وقتی که یک کانتینر را اجرا می­ کنید، داکر تعدادی Namespace را برای آن کانتینر قرار می­ دهد. این Namespace ها یک لایه ای از جداسازی را محیا می­ کنند تا هر وجه از یک کانتینر در namespace مجزایی اجرا شود و دسترسی­ هایش به همان namespace خاص محدود می دهد.

موتور داکر از namespace های زیر در لینوکس استفاده می ­کند:

  • Pid: جداسازی پردازه ها یا فرایندها (PID مخفف Process ID است)
  • Net: مدیریت رابط­ه ای شبکه (NET کوتاه شده­ ی Networking است)
  • Ipc: مدیریت دسترسی به منابع IPC (IPC مخفف شده ی Inter Process Communication است)
  • Mnt: مدیریت نقاط نصب فایل سیستم (MNT کوتاه شده ی Mount است)
  • Utc: جداسازی شناسه ­های نسخه و هسته یا همان کرنل (UTC مخفف عبارت Unix Timesharing System است)

Control group

یکی دیگر از تکنولوژی هایی که موتور داکر بر آن تکیه کرده است Control groups یا همان cgroups است. یک cgroups برنامه را به دسته­ ای از منابع مشخص محدود می کند. Control groups به موتور داکر اجازه می ­دهد تا منابع سخت­ افزاری موجود را بین کانتینرها به اشتراک بگذارد و به صورت اختیاری محدودیت­ هایی را روی کانتینرها اعمال ­کند. برای مثال، شما می ­توانید حافظه ی قابل استفاده برای یک کانتینر خاص را محدود کنید.

فایل سیستم های Union

فایل سیستم های Union یا همان UnionFS، فایل سیستم­ هایی هستند که با ایجاد لایه­ هایی کار می­ کنند که آنها را بسیار سبک و سریع می­ کند. موتور داکر از UnionFS برای آماده سازی بلوک ­هایی برای ساخت کانتینرها استفاده می ­کند. موتور داکر می­ تواند از چندین نوع UnionFS شامل AUFS، btrfs ، vfs و DeviceMapper استفاده کند.

قالب کانتینر Container format

موتور داکر namespaceها، Control groups و UnionFS را با هم ادغام و بسته بندی می کند و نام آن را قالب کانتینر گذاشته است. قالب کانتینر پیش فرض libcontainer است. در آینده ممکن است داکر به واسطه ی ادغام با تکنولوژی هایی از قبیل BSD Jails یا Solaris Zones  از فرمت های دیگر کانتینر نیز پشتیبانی کند.

دوره در حال تکمیل است ... rocket