چه اینکه قصد داشته باشید سیستم خودتان رو به یک سرور راه دور منتقل کنید یا اینکه هر چیزی را برای استفاده در هر جایی پکیج بندی کنید ، همیشه انتقال برنامه ها به سرورجدید با الزاماتشان و اجرای انها بدون خطا ، یک چالش به حساب می آید . در حقیقت چالش های زیادی در این راه وجود دارد و راه حل های موجود تا کنون نتوانسته اند برای اکثریت آنها موفقیت آمیز باشند .
به طور خلاصه داکر به عنوان یک پروژه به شما کمک می کند مجموعه ای کامل از ابزارهای سطح بالاتر را برای انتقال هر فرم از برنامه های کاربردی بر روی سیستم ها و ماشین ها (چه فیزیکی و چه مجازی ) بکار بگیرید و مزایای زیادی با خود به ارمغان می آورد .
داکر برنامه های کاربردی خود را (چه فرآیند ها و چه منابع ) از طریق محفظه های لینوکسی (به عنوان مثال فضاهای نام یا دیگر ویژگی های کرنل ) آرشیو می کند . قابلیت های دیگر آن از خود قطعات پروژه و اجزای آن منشا می گیرد ، ویژگی هایی که همه پیچیدگی کار را با ابزارهای سطح پایین تر یا API های لینوکس که برای سیستم و مدیریت برنامه های کاربردی با توجه به امنیت فرآیندها ، به کار می رود مرتفع می سازد .
پروژه داکر و اجزای اصلی آن :
پروژه داکر ( پروژه متن بازی که توسط dotCloud در ۱۳ مارس ۲۰۱۴ ارائه شد) شامل چندین بخش اصلی است(برنامه های کاربردی ) و اجزای آن (که این بخش ها را بکار می برند ) عمدتا روی هسته های لینوکسی ساخته می شوند .
بخش های اصلی داکر :
دایمون داکر : برای مدیریت محفظه های داکر(LXC) به کار می رود و روی میزبان اجرا می شود و به درخواست های سرویس ها پاسخ می دهد .
CLI داکر : برای برقراری ارتباط بین دایمون های داکر به کار می رود .
Index تصاویر داکر : یک ریپازیتوری (خصوصی یا عمومی ) برای تصاویر داکر
اجزای اصلی داکر :
– محفظه های داکر :
محفظه هایی شامل هر برنامه کاربردی شما مثل سیستم عامل.
کل عملیات انتقال برنامه ها که با داکر انجام می شود متکی بر محفظه های داکر اند . محفظه های داکر اساسا دایرکتوری هایی هستند که می توانند بسته بندی شوند و بعد به اشتراک گذاشته شوند یا روی ماشین مجازی های مختلف با پلت فرم های مختلف اجرا شوند . تنها وابستگی ای که دارند این است که میزبان باید برای اجرای محفظه ها تنظیم شده باشد ( به عبارتی داکر روی میزبان نصب شده باشد ) .
تصاویر داکر : تصاویری از محفظه ها یا خود ایمیج های سیستم عامل (اوبونتو ) که کمک می کند محفظه های داکر اجرا شوند (لانچ شوند ).
فایل های داکر : اسکریپت هایی که فرآیند ساخت تصاویر را خودکارسازی می کند .
قبل از اینکه وارد بحث تعامل بین اجزا و عناصر داکر شویم اجازه دهید کمی در مورد انچه داکر را می سازد بیشتر صحبت کنیم .
داکر ویژگی های زیر از سیستم عامل را بکار می گیرد تا محفظه سازی کارآمدتری ارائه دهد :
فضاهای نام به عنوان اولین سطح از ایزوله سازی : اطمینان حاصل می کند که یک فرآیند در حال اجرا در یک محفظه ، نمی تواند از بیرون دیده شود یا تغییر کند .
گروه های کنترل ، مولفه اصلی از LXC ، حساب منابع و محدودسازی آنها را برعهده دارند .
فایل سیستم های یکتا که به عنوان یک ساختمان بلوک از ظروف عمل می کنند . لایه ها را ایجاد می کند بنابراین باعث می شوند داکر سبک و سریع عمل کند .
محفظه های لینوکس (LXC)
محفظه های لینوکس به عنوان ترکیبی از ویژگی های مختلف در سطح هسته تعریف می شود ( یعنی چیزهایی که کرنل لینوکس می تواند انجام دهد ) که اجازه مدیریت برنامه های ( ومنابعی که آنها را بکار میبرند ) محفظه شده با محیط شان را می دهد . با استفاده از ویژگی های خاص مانند فضاهای نام ، chroot ها ، cgroup ها و… LXC برنامه ها را اجرا می کند و کمک می کند تا با مدیریت خودشان از طریق محدودساختن منابع ، اجازه نداشته باشند به خارج از فایل سیستم خودشان دسترسی داشته باشند (دسترسی به فضای نام پدر ) .
داکر با محفظه هایش از LXC استفاده می کند .
محفظه های داکر :
محفظه های داکر چندین ویژگی خاص دارند . آنها اجازه :
قابلیت حمل نرم افزار
جداسازی فرآیندها
مدیریت مصرف منابع
و نیاز به منابع کمتر به نسبت روش های سنتی مجازی سازی
می دهد . و اجازه :
تداخل با دیگر فرآیندها
ایجاد وابستگی
کار نکردن روی یک سیستم دیگر
آسیب پذیری در برابر حمله ها
سوء استفاده از منابع تمام سیستم و … را نمی دهد .
هر محفظه مثل یک لایه پیاز است و هر کاری که روی یک محفظه انجام می شود در بالای دیگری قرار می گیرد . ابزارو تنظیمات مختلف در این مجموعه باعث شده که کار به صورت هماهنگ انجام شود (به عبارتی مانند یک فایل سیستم )
از آنجایی که هر چیزی مبتنی بر سیستم فایل است ، گرفتن snapshot ها و انجام roll-back ها ( مفصلا بعدا صحبت خواهیم کرد ) در هر لحظه به راحتی انجام می شود / ( شبیه VCS )
هر محفظه داکر از یک ایمیج داکر شروع می شود که فرم پایه ای برای دیگر برنامه ها و لایه ها است .
Docker Images
تصاویر داکر اساس محفظه های داکر است چراکه هر چیزی از ان آغاز می شود . آنها بسیار شبیه ایمیج های سیستم عامل هستند که برای اجرای برنامه ها روی سرور ها یا کامپیوترها بکار می روند .
گرفتن این ایمیج ها ( مثلا اوبونتو ) اجازه قابلیت حمل را در سراسر سیستم فراهم می کند . همه اجازه هایی که بالا گفتیم توسط ایمیج های داکر برای محفظه ها فراهم می شود .
اگر ایمیج اولیه ای که از سرور می گیرید خود سیستم عامل باشد ، با اضافه کردن هر برنامه بر روی سرور، ایمیج های جدیدی می توانید بگیرید که این تغییرات را شامل شوند .
Docker file
همانطور که قبلا هم اشاره کردم ، فایل های داکر اسکریپت هایی هستند که حاوی یک سری دستورالعمل و راهنمایی اند که برای ایجاد یک ایمیج جدید می توانند اجرا شوند . اساس کار آنها به این صورت است که فرآیند هایی که قرار است مکررا یا به صورت دستی اجرا شوند را اجرا کنند . زمانی که اجرای یک فایل داکر خاتمه یافت ، شما با یک ایمیج جدید روبه رو هستید که می توانید از آن برای ساخت یک محفظه جدید استفاده کنید .