آشنایی با داکر

داکر ابزاری متن باز است که برای ایجاد، استقرار و اجرای برنامه‌ها با استفاده از کانتینرها (محیط ایزوله) طراحی شده است. به لطف این تکنیک، برنامه نویس خیالش راحت است که برنامه او می‌تواند در سیستم‌های دیگر بدون نیاز به تنظیمات خاص یا ابزارهای جانبی اجرا شود. داکر را شبیه به ماشین مجازی در نظر بگیرید، با این تفاوت که بازدهی بسیار بالاتری دارد.

منظور از کانتینر چیست؟

کانتینر این امکان را برای توسعه‌دهندگان اپلیکیشن‌ها فراهم می‌کند که یک برنامه را با تمام ماژول‌ها و کامپوننت‌های وابسته آن (مانند کتابخانه‌ها، توابع و …) یکی کرده و به صورت یک پکیج درآورند اما به صورت ایزوله و جدا از هم نگهداری کنند تا آن برنامه تولید شده در پلتفرم‌ها و سیستم‌های مختلف بدون مشکل اجرا شود.

یکی از راه‌های پیاده کردن این تکنولوژی استفاده از ماشین مجازی (Virtual Machine) است که برنامه‌ها را روی یک سخت افزار اما کاملا جدا از هم نگه می‌دارد.


به زبان ساده تر

فرض کنید میخواهید یک اپلیکیشن مانند اسنپ، دیجی کالا و ... طراحی کنید. برای در دسترس قرار دادن اپ برای مردم، به مکانی برای میزبانی آن نیاز دارید.

در گذشته، شما باید داخل کامپیوتر، یک وب سرویس اختصاصی به نام "سرور" راه اندازی می کردید، که اساساً رایانه ای است که برای میزبانی وب سایت ها یا خدمات وب اختصاص داده شده است.

بعدها، امکان استقرار اپ بر روی شرکت های میزبانی سرور، مانند ایران سرور، آسیاتک و ... وجود داشت.

سپس، دوران "ابر" فرا رسید. در دنیا شرکت هایی مانند آمازون (AWS)، علی بابا و ... سرویس سرور ابری اختصاصی داخل دیتاسنتر خود ارائه می دهند.

این شرکت‌ها مفهومی به نام «مجازی‌سازی» را انتخاب کردند، به این معنی که منابع سخت‌افزاری را می‌توان بخش بندی کرد و منابع را به‌طور بهینه‌تر در اختیار مشتریان قرار داد.


کامپوننت های داکر

  • Dockerfile

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

  • Docker image

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

  • Docker run

قابلیت داکر ران در واقع یک دستور است که کانتینر را راه اندازی می‌کند. می‌دانیم که هر کانتینر یک ماشین مجازی است و ماهیت کانتینر به صورت موقتی می‌باشد.

  • Docker Hub

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