اینم یه تجربه پراکنده دیگه! این پست قرار بود جای دیگهای منتشر بشه اما خب نشد. پس اینجا منتشرش میکنم. این متن رفرنسهای زیادی کم داره که انشالا بعدا اضافهشون میکنم
در این پست قرار است که به زیرساختهایی که داکر مبتنی بر آن ساخته شده است اشاره شود. هدف نهایی نشاندادن این موضوع است که داکر امکانات خود را به چه صورت ارائه میکند.
مقدمه
قاعدتا هماکنون که در حال خواندن این متن هستید میدانید که داکر چیست و احتمالا میدانید که چگونه کار میکند. داکر خود مبدع موضوع جدیدی نبوده است و بر دوش تکنولوژیهایی توسعه یافته ایستاده است. استفاده از هریک از این تکنولوژیها به تنهایی دردسر زیادی داشته و داکر با تجمع و آسان کردن استفاده از آنها توانسته است به اقبال عمومی دست یابد. در این پست بصورت خلاصه به بررسی این تکنولوژیها پرداخته میشود.
کرنل لینوکس
بخش عمدهای از امکاناتی که داکر فراهم میکند، با استفاده از سازوکارهایی که در کرنل وجود دارند پیادهسازی شدهاند. با در کنار هم قرار گرفتن این تکنولوژیها داکر توانسته است که به ارائه خدمات بپردازد. لیست این تکنولوژیها عبارتند از:
- فضای نام(namespace)ها در لینوکس: فضاهای نام این امکان را بوجود میآورند که بتوانند بخشی از منابع سیستم را بصورت ایزوله به پروسههایی که درون آنها قرار دارند ارائه دهند. این منابع تنها توسط پروسههای درون آن قابل روئیت است. فضاهای نامی در داکر مورد استفاده قرار گرفتهاند عبارتند از
- فضاینام PID: که باعث میشود پروسه تنها پروسههای درون خود را ببینند
- فضاینام NET: که باعث میشود بتوان کارتشبکه، پشته شبکه و سایر موارد را بصورت ایزوله ارائه کرد.
- فضاینام IPC: که روندهای ارتباطی بین پروسههای مختلف را ایزوله میکند.
- فضاینام MNT: که نحوه اتصال(mount) واسطهای ذخیره سازی را ایزوله میکند.
- فضاینام UTS: که نام کامپیوتر(hostname) و دامنه(NIS) را ایزوله میکند.
- گروههای کنترلی یا cgroups: کرنل لینوکس این امکان را فراهم میاورد که پروسهها در یک ساختار سلسله مراتبی قرار گفته و دسترسی آن به منابع سیستم محدود شود و مورد پایش قرار گیرد. این باعث میشود بتوان به عنوان مثال میزان استفاده از سی پی یو یا رم را کنترل کرد.
فایل سیستم
تکنولوژی دیگری که در داکر مورد استفاده قرار گرفته است، استفاده از یک سیستم فایل خاص به ویژگی copy on write است. سیستم فایلهای با این ویژگی را میتوان بصورت لایه لایه ذخیره کرد و هنگام انتقال در صورت وجود داشتن نسخه قبلی تنها تفاوتها را ارسال نمود. همچنین این امکان به ما این اجازه را میدهد که بتوانیم تغییرات را نسخه متفاوت همانند یک سیستم مدیریت نسخه پیگیری نماییم. سیستم فایلی که داکر از آن استفاده union file system است که ویژگیهای زیر را دارد:
– بصورت لایهایست
– هر لایه بایستی commit شود
– هر لایه بصورت فقط خواندنی ذخیره میشود.
– تنها فایلهای تغییر یافته در آن لایه ذخیره میشوند.
اجرا یک کانتینر
برای اجرای کانتیر و مشخص کردن تمام مشخصات آن بایستی این مشخصات را به فرمتی توصیف کرد. در داکر این فرمت container format نام داشته و داکر سعی در استاندارد کردن آن را دارد.
نوشته زیر پوست داکر چه خبر است اولین بار در تجربه های پراکنده پدیدار شد.