راهنمای داکر برای تازهکارها: داکر چیست؟

در سالهای اخیر به کرات اسم «داکر» (Docker) رو شنیدهایم. نوشته پیشرو راهنمایی ساده و آسان برای آشنایی با داکر و مفاهیم اولیه به همراه تمرین، برای کسانیست که تازهکار هستند. با ما همراه باشید.
یادآور میشوم این مجموعه شامل سه پست خواهد بود و دو نوشته دیگر با عناوین «راهنمای داکر برای تازهکارها: کلمات کلیدی در Docker» و «راهنمای داکر برای تازهکارها: تعریف داکرفایل، ساخت ایمج و راه اندازی کانتینر» در دسترساند.
داکر چیست؟
به گفته خودش، داکر ابزاریست برای ساخت، ارسال و اجرای آسان اپلیکیشن. یکی از مهمترین مفاهیم در داکر، کانتینر است. کانتینر با استفاده از مجازیسازی در لایه سیستم عامل و ایزوله کردن منابع به این امر کمک میکنه. میشه گفت کانتینر و ماشین مجازی تقریبا شبیه هم عمل میکنند با این تفاوت که کانتینر در لایه سیستمعامل و ماشین مجازی در لایه سختافزار این ایزولهسازی را انجام میدهند که همین باعث تفاوتهایی در عملکرد و پرفورمنسشان میشود. در ادامه با مقایسه این دو ابزار سعی میکنیم مفهوم کانتینر رو بهتر درک کنیم.
تفاوتهای ماشین مجازی و کانتینر
ماشینهای مجازی با کمک هایپروایزر به صورت انتزاعی یک سرور رو به چند سرور تبدیل میکنند. هایپروایزر یک نرمافزار، میانافزار و یا سختافزار مانیتورینگ ماشین مجازیست که درست بالای ماشین میزبان (Host Machine – سختافزار) قرار گرفته و با کمک ماشین میزبان منابع مورد نیاز ( رم، سیپییو و… ) رو بین ماشینهای مجازی تقسیم میکنند.
به این ماشینهای مجازی اصطلاحا، ماشین مهمان (Guest Machine) هم گفته میشه. ماشین مهمان شامل اپلیکیشن و هر آنچه برای اجرای آن لازمهست از مدیریت سیستم و کتابخانههای لازم گرفته تا تمام استک سختافزاری شامل سیپییو، رم و … که به صورت مجازی در اختیارش قرار داده شده. ماشینهای مجازی هر کدام سیستم عامل مجزای خودش رو دارند و در لایه بالاتر لایبرریها و سپس اپلیکیشن قرار میگیرد.
و اما کانتینرها. کانتینرها هم مثل ماشینهای مجازی فضای مجزا و ایزوله خودشان را برای پردازش دارند از کتابخانهها گرفته تا منابع تخصیص داده شده، سیپییو و رم و نتورک. اما تفاوت جایی آغاز میشه که کانتینرها برعکس ماشینهای مجازی، کرنل سیستمعامل ماشین میزبان رو بین خودشون به اشتراک میگذارند و همین باعث عملکرد بهترشان میشود.
کانتینرها به نسبت ماشینهای مجازی به فضای کمتری نیاز دارند و به همین خاطر منابع موجود را میتوانند با تعداد بیشتری اپلیکیشن تقسیم کنند.
در پایین، از تصاویر خود سایت داکر استفاده شده که به درک بهترمون کمک کنه.
چرا از داکر استفاده کنیم؟
الف. داکر با استفاده از ابزار و کلاینتی که آماده کرده کار رو برای همه راحت کرده تا هر کسی بتواند اپلیکیشن خودش را به سرعت و به آسانی در کامیپوتر شخصیش بیلد کند و مطمئن باشد بدون نیاز به اصلاحات روی سرور کلود و یا هر جای دیگری قابل اجراست. به زبان سادهتر اپلیکیشنهای شما را برای انتقال در محیطهای گوناگون قابل حمل کرده.
ب. همانطور که پیشتر هم بهش اشاره کردیم سرعت بالا و سبک بودن داکر، بخاطر به اشتراکگذاری کرنل سیستمعامل و تخصیص کمتر منابع و در عین حال ایجاد فضای مجزا و ایزوله، اون رو به گزینه مناسبی برای کار تبدیل کرده.
پ. از طرف دیگر وجود کامیونیتی گسترده (داکر هاب)، ایمجهای آماده و همچنین ساختار لایهای این ایمجها – که جلوتر توضیح خواهیم داد- امکان ایجاد کانتینر و همچنین توسعهشان را سادهتر کرده.
ت. همچنین با امکان ایجاد کانتینرهای مجزا برای کامپوننتهای نرمافزاری (شکستن اپلیکیشن به ماژولهای مختلف: ردیس، مایاسکیوال و …) و نیز توانایی ارتباط آسان بین این کامپوننتها، امکان توسعه مستقلانه آنها در آینده را فراهم میکند.
در نوشتهی بعدی با عنوان «راهنمای داکر برای تازهکارها: کلمات کلیدی داکر» با مفاهیم و کلمات کلیدی مورد استفاده در داکر آشنا میشیم.
دیدگاهها