داکر پلتفرمی منبعباز است که به توسعهدهندگان کمک میکند تا با استفاده از قابلیت مجازیسازی در سطح سیستمعامل، نرمافزارها را در قالب بستههایی با عنوان «کانتینر» ارائه دهند. اگر توسعهدهنده نرمافزار باشید حتما این پست از بلاگ وایلدکدر رو مطالعه کنید.
داکر پلتفرمی منبعباز است که برای ساخت و استقرار و مدیریت برنامههای کانتینری بهکار برده میشود. بنابراین، با استفاده از این ابزار توسعهدهندگان میتوانند کانتینرها را بسازند و آنها را مستقر، اجرا، بهروزرسانی و مدیریت کنند. همچنین، این ابزار به توسعهدهندگان امکان میدهد تا کامپوننتهایی را اجرا کنند که کد منبع (Source Code) را با کتابخانههای سیستمعامل و وابستگیهایی برای اجرای آن کد در هر محیطی ترکیب میکنند.
کانتینرها به یک برنامه نویس اجازه می دهند تا یک برنامه را با تمام قسمت های مورد نیاز مانند کتابخانه ها و سایر وابستگی ها بسته بندی کند و همه آن را به صورت یک بسته ارسال کند. با انجام این کار ، به لطف Containers، توسعه دهنده می تواند اطمینان داشته باشد که این برنامه بدون در نظر گرفتن هرگونه تنظیمات سفارشی که ممکن است دستگاه داشته باشد ، متفاوت از دستگاه مورد استفاده برای نوشتن و تست کد است.
در این مسیر، کانتینرها نیز وظیفه دارند تا توسعه و تحویل برنامههای کاربردی توزیعشده را آسانتر کنند. استفاده از این ابزارها از محبوبیت بیشتری نیز برخوردار شده است؛ بهویژه حالا که سازمانها بهسمت توسعه بومی ابری یا Native-Cloud و استفاده از محیطهای چندابری ترکیبی حرکت میکنند. اگرچه برای توسعهدهندگان این امکان وجود دارد تا کانتینرها را بدون استفاده از Docker و با قابلیتهای موجود در سرور لینوکس و سایر سیستمعاملها ایجاد کنند، استفاده از Docker برای ساخت کانتینرها سریعتر و آسانتر و ایمنتر است. گواه این موضوع هم گزارش خودِ داکر است. براساس این گزارش، بیش از ۱۳میلیون نفر توسعهدهنده در سرتاسر دنیا از این پلتفرم منبعباز استفاده میکنند!
کانتینرها نوعی از مجازیسازی سیستمعامل هستند. یک کانتینر تکی ممکن است برای اجرای هرچیزی، از میکروسرویس کوچک یا فرایندهای نرمافزاری گرفته تا برنامه بزرگتر، استفاده شوند. در هر کانتینر، تمامی فایلهای اجرایی، کدهای باینری، کتابخانهها و فایلهای موردنیاز برای پیکربندی قرار دارد. بااینحال، درمقایسهبا رویکرد مجازیسازی سرور یا ماشین، کانتینرها حاوی تصویر سیستمعامل (OS image) نیستند. این موضوع باعث میشود تا کانتینرها کمحجمتر شوند و علاوهبر انتقال سادهتر، هزینههای سربار کمتری نیز داشته باشند.
در استقرار برنامههای بزرگتر، ممکن است چندین کانتینر بهصورت دستهای بهکار گرفته شوند. چنین خوشههای بزرگی را معمولاً ارکستراتورهای کانتینری مانند Kubernetes مدیریت میکند. درمجموع، میتوان گفت کانتینرها تمامی عملکردها و مزایای ماشینهای مجازی را دارند؛ ازجمله قابلیت جداسازی برنامه و مقیاسپذیری و مقرونبهصرفهبودن.