داکر واقعا چیه؟ به چه دردی میخوره آیا؟

۱۰ مرداد ۱۳۹۸
what is docker

چند وقتیه اسم داکر رو همه جا میشنویم و تقریبا تعداد کاربران و شرکت هایی که دارن از این تکنولوژی جدید استفاده میکنند روز به روز داره بیشتر میشه و خب سوالی که شاید برای خیلی ها در ابتدا پیش میاد اینه که اصلا داکر چیه و چرا این همه اقبال بهش زیاده شده و توجهات رو به خودش جلب کرده‌؟

در ابتدا باید بگم که مفهوم داکر برای کسایی که با سیستم عامل های یونیکس آشنا هستن و به مباحث هسته لینوکس مسلطن چیز جدیدی نیست و این مفهوم از هسته لینوکس گرفته شده و به صورت یک تکنولوژی مجزا خودش رو به جامعه برنامه نویسی و DevOps تحمیل کرده و داره روز به روز نفوذش بیشتر میشه.

داکر چیست؟

اگر وارد سایت داکر بشین خودش رو اینجوری معرفی میکنه که :

Build, Share, and Run Any App, Anywhere.

بساز، به اشتراک بذار،  اجرا کن. هر اپلیکیشنی رو هرکجایی که خواستی 🙂

حالا اینکه چیو بساز و اجرا کن که توی هر محیطی اجرا بشه و جواب بگیرین برمیگرده به مفاهیم اصلی و پایه ای داکر. خب داکر چندین جزء اصلی داره که باید بدونین، یکی از مهم‌ترین مفاهیم در داکر، کانتینر هست. میشه گفت کانتینر و ماشین مجازی تقریبا شبیه هم عمل می‌کنند ولی با یک سری تفاوت ها. وقتی از ماشین مجازی یا Virtual machine استفاده می‌کنیم منابع سخت افزاری رو برای محیط های مختلف تقسیم می‌کنیم و در نهایت براشون سیستم عامل نصب می‌کنیم و اپلیکیشن رو توی اون سیستم عامل نصب می‌کنیم. داکر اما به جای اینکه از همون اول منابع سخت افزاری رو تقسیم کنه و سرور مجبور باشه چندین سیستم عامل رو همزمان اجرا کنه روی سیستم عامل نصب میشه و حالا محیط های ایزوله روی خود داکر اجرا میشه که از طریق image های اماده درست می‌شه و درخواست هاشون رو به سیستم عامل میده و سیستم عامل تحویل کرنل میده.

تفاوت‌های ماشین مجازی و کانتینر

containers vs vms

 

در شکل فوق، هم در Docker و هم در ماشین‌مجازی دو عنصور Server و Host OS مشترک هستند. در مرحله بعدی در ماشین‌مجازی (Virtual Machine) یک مجازی‌ ساز مانند VMware Workstation، VirtualBox و در Docker نرم‌افزار Docker را نصب داریم.

تفاوت‌ها از اینجا شروع می‌شود که در ماشین‌ مجازی باید یک سیستم‌ عامل کامل را نصب و نرم‌ افزارها را روی آن نصب کرد. ولی Docker این مرحله را ساده کرده است و یک نسخه کوچک از سیستم‌ عامل را در خود دارد که بدون نیاز به نصب سیستم‌عامل‌های سنگین و پیچیده می‌توان نرم‌افزارها را روی آن نصب و تست کرد.

یک تفاوت شاخص میان ماشینهای مجازی و داکر نحوه تعامل هر یک از آنها با سخت افزار سیستم است. هر ماشین مجازی به تنهایی نیازمند سی پی یو، رم، فضای ذخیره سازی اختصاصی است در صورتی که در داکر با به اشتراک قرار دادن یک سیستم عامل و کرنل آن میتوان محفظه های داکر متعددی را به آسانی دانلود و اجرا کرد. فضای ذخیره سازی مورد نیاز ماشینهای مجازی غالبا بیش از چند گیگا بایت خواهد بود در صورتی که غالب داکرهای شاخص فضایی بیش از چند ده یا چند صد مگا بایت را اشغال نمیکنند که این امکان ذخیره سازی و در دسترس قرار دادن تعداد فراوانی محفظه بر روی سرورها را فراهم میکند. سرعت بار گذاری و بالا آمدن بسیار سریعتر داکر نسبت به ماشینهای مجازی که در بهترین حالت نیازمند حداقل دقایقی برای آماده به کار شدن میشوند، مرهون به اشتراک گذاری کرنل سیستم عامل و نیاز به فراخوانی و خواندن اطلاعات ذخیره شده بسیار محدودتری است.

خب در بالا اسم ایمیج رو اوردیم ( Image)، خب حالا ببینیم ایمیج چیه؟

ایمیج ها در داکر یک سری فایل هستند و از چندین لایه تشکیل شدند و در واقع برای اجرای کانتینرها توسعه داده شدند. ایمیج ها اصولا یک سری دستورالعمل هستند که که یک نسخه از یک اپلیکیشن رو کامل اجرا میکنند.در اینجا شاید استفاده از اپلیکیشن واژه درست و کاملی نباشه، ولی منظور هرنرم افزار یا زبان و … است که شما قصد استفاده از آن را دارید. مثلا قصد دارید از Nginx به عنوان وب سرور و از زبان Golang برای توسعه برنامه استفاده کنید هرکدام ازین بخش ها یک ایمیج مجزاست که کافیه شما اون رو دریافت و نصب کنید (در بخش های آینده به تفکیک در مورد این قسمت ها صحبت میکنیم) و سپس کانتینرهای خودتون رو از این ایمیج ها بسازید.

در واقع کانتینرها از ایمیج ها ساخته میشوند، میتونید این جوری در نظر بگیرید که ایمیج یک کلاس هست و کانتینر نمونه ها (Instance) هایی از اون ایمیج هستند. در واقعا شما یک ایمیج دارید و ممکنه چندین کانتینر مختلف از اون ایمیج داشته باشید.

حالا چرا داکر واقعا ؟

why docker

۱- خب مهمترین مزیت داکر اینه که شما یک بار داخل کامپیوتر شخصیتون هر برنامه ای رو بخاین میسازین و اجرا میگیرین و وقتی مطمئن شدین کار میکنه اونو همونجوری برمیدارید و روی سرور خودتون که میتونه هرچیزی باشه اجرا کنید. خب مزیت خیلی بزرگیه. دیگه نیازی نیست روی سرور همین مراحل رو دوباره انجام بدین.

۲- چون داکر منابع کمتری تخصیص میده و فضایی که اختصاص میده ایزوله هست خب سبک تر هست و در نتیجه سرعت اجرای بالایی نیز دارد.

۳- هرچیزی اراده کنید داخل سایت داکر هاب به عنوان مخزن ایمیج های آماده وجود داره.

3
برچسب ها :
نویسنده مطلب علی فلاحتی

3 دیدگاه

  • هادی
    ۱۰ مرداد ۱۳۹۸

    بسیار عالی

  • sara
    ۰۸ شهریور ۱۳۹۸

    برای چه پروژه هایی از داکر باید استفاده کنیم ؟ میشه یه سایت شخصی رو هم روی داکر اجرا کرد ؟

    • نیما
      ۱۰ شهریور ۱۳۹۸

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

لینک های مفید