داکر (Docker) یک پلتفرم متنباز است که برای ساخت، توسعه، و اجرای برنامهها با استفاده از محیطهای ایزوله شده به نام “کانتینرها” (Containers) استفاده میشود. با استفاده از داکر، میتوانید برنامهها و تمامی وابستگیهایشان را در یک بستر یکپارچه توسعه و اجرا کنید بدون اینکه به بستر سیستمعامل میزبان وابسته باشید.
در داکر، هر برنامه یا سرویس در یک کانتینر قرار میگیرد که شامل کدهای برنامه و تمام وابستگیها و منابع لازم برای اجرای آن است. کانتینرها از فناوریهای مانند cgroups و namespaces برای ایجاد ایزولاسیون منابع استفاده میکنند تا از تداخل منابع با سایر کانتینرها و سیستمعامل میزبان جلوگیری کنند.
داکر (Docker) به عنوان یک پروژه متنباز در سال ۲۰۱۳ توسط شرکت Docker، Inc. تأسیس شد. ایده اصلی پشت داکر برگرفته از فناوریهای قبلی مانند chroot و LXC بود، اما با تمرکز بر روی سادگی و قابلیت استفاده آسان تر توسعه یافت.
داکر ابتدا به عنوان یک ابزار داخلی در شرکت dotCloud که یک سرویس پلتفرم-as-a-service (PaaS) بود، توسعه یافت. در سال ۲۰۱۳، شرکت dotCloud تصمیم گرفت تا داکر را به عنوان یک پروژه مستقل منتشر کند و توسعه آن را به صورت جامعهمحور ادامه دهد.
اولین نسخه عمومی داکر در مارس ۲۰۱۳ منتشر شد و به طور سریع توجه و تأیید بسیاری از توسعهدهندگان و سازمانها را به خود جلب کرد. داکر توانست نیازهای روزافزون صنعت نرمافزار را به خوبی برآورده کند، از جمله ایجاد محیطهای توسعه یکپارچه، استقرار سریع برنامهها، و مدیریت بهتر نگهداری و راهاندازی برنامهها در محیطهای متنوع.
۱. استقلالیت از بستر سیستمعامل: با استفاده از داکر، میتوانید برنامهها را به صورت کانتینرهای ایزوله بسته بندی کنید.
این به شما امکان میدهد که برنامههای خود را بدون وابستگی به بستر سیستمعامل میزبان در هر محیطی اجرا کنید. به عبارت دیگر، میتوانید برنامههای توسعه داده شده در یک سیستمعامل را در سیستمعاملهای دیگر نیز به راحتی اجرا کنید.
۲. تسریع فرایند توسعه و استقرار: داکر به شما امکان میدهد برنامهها و وابستگیهایشان را در کانتینرها بسته بندی کنید.
این بستهبندی قابل حمل و قابلیتپذیر است و میتوان آن را در سرورها و محیطهای مختلف اجرا کرد. این روش به توسعهدهندگان امکان میدهد برنامهها را به سرعت توسعه دهند، آزمایش کنند و استقرار دهند.
۳. ایزولهسازی منابع: داکر با استفاده از فناوریهایی مانند cgroups و namespaces، ایزولاسیون منابع بین کانتینرها و سیستمعامل میزبان را فراهم میکند.
این به شما امکان میدهد تا برنامهها را به صورت ایزوله اجرا کرده و از تداخل منابع جلوگیری کنید. همچنین، ایزولهسازی منابع امنیتی را بهبود میبخشد و از حفظ امنیت سیستمها در محیطهای چندتنه میتواند کمک کند.
داکر به عنوان یک پلتفرم محبوب و پراستفاده در محیطهای سرور و توسعه نرمافزار، رقبایی نیز دارد که برخی از مهمترین آنها عبارتند از:
Kubernetes (K8s) :Kubernetes یک سامانه مدیریت کانتینر متنباز است که امکان مدیریت و اجرای مقیاسپذیر کانتینرها را فراهم میکند. در حقیقت، Kubernetes و داکر مکمل یکدیگر هستند؛ داکر برای بسته بندی و اجرای کانتینرها و Kubernetes برای مدیریت و اجرای آنها در یک محیط مقیاسپذیر و قابل توسعه.