داکر

داکر چیست؟

داکر یک پلت فرم open source که توسط Solomon Hykes به کمک مهندسان شرکت dotcloud از جمله Andrea Luzzardi و Francois-Xavier Bourlet و Jeff Lindsay(همکار مستقل) با زبان برنامه نویسی Go در سیستم عامل لینوکس نوشته شد و در 13 مارس 2014 ارائه داد.

لوگوی داکر
لوگوی داکر

چه کاربردی دارد؟

اصلی ترین هدف داکر ساخت و ایجاد یک فضای ایزوله برای اپلیکیشن هایی هست که داریم؛ تا بتونیم به صورت مستقل از هم اجراشون کنیم و برای هر اپلیکیشن تمام وابستگی هاشو (dependencies) کنارش نصب کنیم؛ که خب این باعث میشه اپلیکیشن (پروژه ما) یک ماژول (که توی داکر بهش می گن container) مجزا که خب یعنی یک اپلیکیشن قابل حمل بر روی هر سرور و کامپیوتر دیگه بدون نصب دوباره هیچ چیزی؛ چرا که تمام نیازمندی های پروژه توی container یکبار نصب شدن.

مثال: شما یک وب سایت طراحی کردی، وقتی می بری روی سرور، باید php رو نصب کنی، mysql یا sqlserver یا هر دیتابیس دیگه ای رو برای پروژه نصب کنی، کلی افزونه نیاز هست که باید نصب کنی و ... !

در صورتی که شما می تونی پروژت رو تویه یک container در بستر داکر docker قرار بدی و از اون موقع به بعد اون container رو هرجایی که می خوای ببری و دیگه بدون نصب هیچ چیزی اجراش کنی؛ شایان ذکره که خیلی از پروژه ها روی ورژن های خاصی از مثلا php کار می کنن که در این صورت باز هم داکر فوق العادس که همون ورژن رو یک بار نصب می کنی و هیچوقت مشکل آپدیت شدن ورژن جدید حین نصب (که منجر میشه که عدم اجرا شدن پروژه) رو نخواهید داشت.

سه مفهوم اصلی در داکر:

  • ایمیج: ایمیج ها را در داکر پس از دریافت اجرا می‌کنیم. همانطور که در تصویر پایین می‌بینید یک Base Image مانند Debian روی این داکر نصب شده است و روی آن Image‌های دیگر را نصب کرده ایم. در واقع Image‌ ها پس از پایان به حالت اولیه خود باز می‌گردند چرا که همانطور از نام آن‌ها مشخص است تنها یک تصویری از پکیج اصلی هستند. برای حذف تغییرات Image می‌توان حالت آن‌ها را با دستورات خاصی ذخیره کرد.
docker image
docker image
  • هاب: یک سرویس اشتراک گذاری تهیه شده توسط خود شرکت Docker است که شامل مخزنی از image‌ های آماده برای Docker است. این مخزن حاوی چندین هزار برنامه و سیستم عامل است که می‌توان به آن image‌هایی را هم اضافه کرد.
  • کانتینر: همانطور که پیش تر هم به صورت خلاصه در رابطه با کانتینرها گفته شد، می‌توان گفت Container ظرفی است که Image‌ ها را در آن اجرا می‌کنند. Container‌ ها از روی Image‌ ها ایجاد می‌شوند و به وظایف خود عمل می‌کنند. به عنوان مثال تصور کنید از یک Centos چند Container می‌سازیم و در هر کدام تغییرات متفاوتی اعمال می‌کنیم.

تفاوت داکر و Virtual Machine:

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

Virtual Machine VS. Docker
Virtual Machine VS. Docker

سخن پایانی:

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

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


https://www.aparat.com/v/Cdmz9

docker slide

docker article



منابع:

اگر منابع کامل تر و بروزتر دیگری هم می شناسید، لطفا معرفی کنید.