Docker چیست؟

فهرست مطالب

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

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

داکر چگونه کار می‌کند؟

داکر با ارائه ی روشی استاندارد برای اجرای کد شما کار می‌کند . این سرویس، سیستم عاملی برای کانتینرها به شمارمی‌آید و همانند نحوه مجازی سازی یک ماشین مجازی (نیاز به مدیریت مستقیم) سخت افزار سرور را حذف می‌کند. کانتینر ها سیستم عامل یک سرور را مجازی می‌کنند. داکر بر روی هر سرور نصب و دستورات ساده ای را ارائه می‌دهد که می‌توانید از آن ها برای ساخت، راه اندازی و یا توقف کانتینرها استفاده نمایید.

دلایل استفاده از Docker

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

  • ارسال سریع کد ها
  • استاندارد سازی عملیات برنامه
  • جا به جایی یکپارچه کد ها
  • از منابع به درستی استفاده کنید
  • صرفه جویی در هزینه
  • قابل اطمینان
  • استفاده آسان
  • و…
  • ارسال سریع کد ها

کاربران داکر به طور متوسط نرم افزار را با سرعتی 7 برابر بیشتر از کاربران غیر داکر ارسال می‌کنند. داکر این امکان را برای شما فراهم می‌کند تا خدمات ایزوله را هر چند وقت یکبار که نیاز دارید، ارسال کنید. 

  • استاندارد کردن عملیات

برنامه های کوچک کانتینری به ایجاد سهولت در مواردی همچون : 

  • استقرار
  • شناسایی مشکلات
  • بازگشت به عقب برای اصلاح می‌پردازد.
 
  • یکپارچه حرکت کنید

این برنامه ها می‌توانند به طور یکپارچه از ماشین های توسعه محلی به استقرار تولید در AWS منتقل شوند.

  • صرفه جویی در پول

کانیترهای داکر اجرای کدهای بیشتر را روی سرور آسان می‌سازد و استفاده را بهبود می‌بخشد، و در نهایت در هزینه ها صرفه جویی می‌کند.  

  • زمان استفاده از Docker

از کانتینر های داکر می‌توان به عنوان بلوکی اصلی در ایجاد برنامه ها استفاده کرد. Docker می‌تواند به آسان سازی مواردی همچون:

  • ساخت و اجرای معماری میکروسرویس های توزیع شده
  • استقرار کد شما با خطوط لوله یکپارچه سازی و تحویل مستمر استاندارد شده
  • ساخت سیستم های پردازش داده بسیار مقیاس پذیر
  • ایجاد پلتفرم های کاملاً مدیریت شده برای توسعه دهندگان

درک کانتینرها

این فناوری را می‌توان به سه دسته مختلف در نظر گرفت. که می‌توان آن را به صورت سه دسته مختلف در نظر گرفت که به شرح زیر است :

  • Builder : به مجموعه ای از ابزارها برای ساخت کانتینر ها می‌گویند.
  • Engine : برنامه ای است که برای اجرای یک کانتینر استفاده می‌شود.
  • Orchestration : فناوری مورد استفاده برای مدیریت بسیاری از کانتینرها، از جمله Kubernetes و OKD

جایگزین های Docker

از آن جا که لینوکس تغییرات گسترده با دسترسی بالا را آسان می‌کند. ابزار زیادی وجود دارد که به شما کمک می‌کند خدمات یا حتی کل سیستم عامل خود را در کانتینر اجرا کنید. که برای مثال می‌توان به موارد زیر اشاره کرد:

  • OCI
  • Docker
  • CRI-O
  • Podman
  • LXC
  • و موارد دیگر..

خدمات کانتینری

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

مزایای استفاده از برنامه های کانتینری

  • وزن سبک تر

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

  • بهره وری توسعه دهندگان بهبود یافته

برنامه های کانتینری را می‌توان یک بار نوشت و در محل های مختلف اجرا نمود. در مقایسه با VMها، کانتینرها با سرعتی بیشتر و آسان تر در استقرار، تهیه و راه اندازی مجدد هستند که این امر آن ها را در استفاده خطوط لوله یکپارچه سازی و تحویل مداوم (CI/CD) ایده آل می‌سازد و برای تیم های توسعه که از شیوه های Agile و DevOps استفاده می کنند مناسب تر هستند.

  • بهره وری بیشتر از منابع

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

از دیگر مزایایی که استفاده از کانتیر ها به همراه می‌آورد می‌توان به بهبود کیفیت برنامه، پاسخ سریع‌تر به تغییرات بازار و موارد دیگر اشاره کرد.

چرا از Docker استفاده کنیم؟

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

  • قابلیت حمل کانتینر بهبودیافته و بدون درز

در صورتی که LXC در اکثر مواقع  به پیکربندی‌های مخصوص ماشین اشاره می‌کنند، کانتینرهای Docker بدون تغییر در هر دسکتاپ، مرکز داده و محیط ابری اجرا می‌شوند.

  • وزن سبک‌تر و به‌روزرسانی‌های دانه‌دارتر

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

  • ایجاد خودکار کانتینر

داکر می‌تواند به طور خودکار یک کانتینر بر اساس کد منبع برنامه بسازد.

  • استفاده مجدد از کانتینر

کانتینرهای موجود را می‌توان به عنوان فایل image پایه استفاده کرد؛ بنابراین، امکان استفاده مجدد از آن وجود دارد.

نکته!

از جمله ویژگی های موجود در این سرویس منبع باز این است که شما می‌توانید انتخاب کنید از چه فناوری ای استفاده نمایید. موتور های داکر برای توسعه دهندگانی که به محیطی سبک نیاز دارند مفید است. در صورتی که داکر در سیستم شما وجود داشته باشد Docker Community Edition (docker-ce) یک راه عالی برای شروع کار با کانتینرها است. Dockerhub و Quay.io مخازنی هستند که تصاویر را برای موتور کانتینر انتخابی شما ارائه می‌دهند. در صورتی که Docker Community Edition در دسترس نمی‌باشد یا پشتیبانی نمی‌شود، Podman گزینه عاقلانه ای است.

مقایسه داکر و LXC

LinuXContainers یا LXC، در سال 2008 در هسته ی لینوکس اجرا و مجازی‌سازی را برای یک نمونه از لینوکس به طور کامل فعال کرد. در این بخش به مقایسه ی میان این دو سرویس میپردازیم:

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

  •  داکر می تواند به طور خودکار یک کانتینر بر اساس کد منبع برنامه بسازد.

ابزارها و اصطلاحات داکر

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

  • DockerFile

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

  • تصاویر یا Image داکر

حاوی کد منبع برنامه اجرایی و همچنین تمام ابزارها، کتابخانه ها و وابستگی هایی هستند که کد برنامه برای اجرا به عنوان یک ظرف نیاز دارد.

  • کانتینرهای داکر

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

  • Docker Desktop

Docker Desktop یک برنامه کاربردی برای Mac یا Windows است که شامل Docker Engine، Docker CLI Client، Docker Compose، Kubernetes و موارد دیگر است. همچنین شامل دسترسی به داکر هاب می‌شود.

  • داکر دیمون

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

  • رجیستری داکر

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

  • و…

و در آخر

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

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

در حال حاضر به جای تمرکز بر روی سرورهای منفرد، اینترنت بر روی آرایه هایی به نام cloud ساخته می‌شود. امروزه با افزایش علم و دانش محدودیت های سخت افزاری حذف و به نرم افزار تبدیل شدند. این سرورهای مبتنی بر نرم افزار کانتینر نامیده می‌شوند و ترکیبی از سیستم‌عامل لینوکس هستند که روی آن اجرا می‌شوند.

امیدواریم از خواندن این مقاله لذت برده باشید؛ جهت کسب اطلاعات بیشتر به وبلاگ پویان آی تی مراجعه نمایید.

به این مقاله امتیاز دهید!

میانگین امتیاز 5 / 5. تعداد رأی ها : 1

هنوز هیچ رأیی داده نشده. اولین نفر باشید!

اشتراک گذاری

و در ادامه بخوانید

اولین دیدگاه را اضافه کنید.

برچسب ها

Docker DevOps