داکر چیست و چه کاربردهایی دارد؟
اگر در حوزه فناوری و کامپیوتر مشغول به کار هستید باید دائما اطلاعات خود را بروزرسانی کنید. اگر کار طراحی سایت انجام میدهید، به احتمال زیاد این روزها در مورد داکر صحبتهای زیادی شنیده اید. راستش را بخواهید توسعه، آزمایش و استقرار برنامهها با استفاده از مجازیسازی بسیار سادهتر است و هزینه کمتری دارد. این امر با استفاده از داکر امکان پذیر است. استفاده از تمامی اجزای هسته سیستم عامل در کنار هم توسعه را برایتان آسانتر خواهد کرد. در این مقاله قصد داریم به طور جامع در رابطه با اینکه داکر چیست؟ صحبت کنیم. با ما همراه باشید.
داکر چیست؟
داکر بر مبنای سیستم عامل لینوکس راهاندازی شده است. با این پلتفرم متن باز، برنامهها میتوانند از تمام امکانات پیش نیاز و مازاد یک Kernel لینوکس استفاده کنند و امکاناتی را به کار ببرند که در سیستم عامل میزبان ارائه نشده است. این ویژگی سبب میشود سرعت و عملکرد برنامه بهبود و حجم آن کاهش یابد. طراحی اپلیکیشن و توسعه آن با داکرها آسانتر شده است. به عبارت دیگر تمام پروسهها و نرم افزارها در یک محیط ایزوله و جدا بر روی یک Kernel لینوکس راهاندازی میشوند. داکر در ابتدا برای لینوکس ساخته شد، اما امروزه به خوبی روی ویندوز و MacOS نیز کار میکند.
کانتینر (Container) چیست؟
سالیان زیادی است که ماشینهای مجازی در حال استفاده هستند. آنها برنامهها را در محیطی ایزوله و کاملا جدا از هم نگهداری میکنند. برنامهها روی یک سخت افزار اما کاملا جدا از هم هستند. کانتینرها را میتوان یک جایگزین مناسب برای ماشینهای مجازی معرفی کرد. آنها هسته سیستم عامل را به اشتراک میگذارند. سرعت اجرای آنها بسیار بالاست و نسبت به ماشینهای مجازی منابع کمتری استفاده میکنند. ماشینهای مجازی فضای زیادی را اشغال میکنند، در صورتی که حجم کانتینرها معمولا به مگابایت است. کانتینرها به سه بخش زیر قابل تقسیم هستند.
- سازنده (Builder): فناوری مورد استفاده برای ساخت کانتینر
- موتور (Engine): فناوری مورد استفاده برای راهاندازی کانتینر
- تنظیم (Orchestration): فناوری مورد استفاده برای تنظیمات و مدیریت کانتینر
کانتینر داکر چیست؟
کانتینر container یک مفهوم جدید نیست و از قبل در حوزهی itمطرح بود اما داکر سبب شد استفاده از آن بیشتر از گذشته شود. یکی از نگرانیهای توسعه دهندگان این است که برنامه در سیستمعاملهای مختلف قابلیت اجرا را داشته باشد و داکر کانتینر این نگرانی را رفع کرده است. به عبارت دیگر کانتینر یک راه مطمئن است. توسعه دهندگان یقین خواهند داشت که برنامه داکر در هر ماشین، با سیستم عامل لینوکس بدون توجه به تنظیمات سفارشی قابل اجرا و استفاده است. برای کار با داکر و ساخت برنامه داکر باید از کامپوننتهایی به شرح زیر استفاده کنید:
Dockerfile
در دنیای واقعی افراد برای پس از ورود به یک محل جدید خود را معرفی میکنند، این قاعده شامل حال داکر نیز است! مهمترین اطلاعی که Dockerfile به شما میگوید این است که با اجرا شدن کانتینر قرار است چه اتفاقی رخ دهد. اطلاعاتی نظیر سیستم عامل پشت Container، زبان ها، متغیرهای محلی، پورتهای شبکه و... همگی از محتویات این فایل هستند. تصور نکنید که با یک فایل بزرگ و عجیب سرو کار دارید. یک فایل متنی ساده که حاوی اطلاعات بسیار مهم برای راهاندازی داکر است. قابل ذکر است که دستورالعملهای ساخت Docker Image نیز در این فایل قرار میگیرد.
Docker image
Docker image یک فایل قابل حمل است که مشخص میکند Container کدام کامپوننتهای نرم افزاری را اجرا کند. وقتی شما Docker file را مینویسید قابلیت Docker Build را فراخوانی میکنید تا بر اساس دستورالعمل موجود در Docker file یک Image بسازد. در طی این فرآیند Dockerfile تعدادی فایل را از مخزنهای مختلف (Repository) دانلود میکند و باید به طور واضح مشخص شود که کدام نسخهها دریافت کند. Image یک تصویر از سیستم عامل اصلی و استاتیک است.
Docker run
یک دستور راهاندازی Container است. هر Container یک instance یا نمونه از Image است و ماهیت Container به صورت موقتی است. تا زمانی که برای Container اسامی مختلفی را اختصاص میدهیم هر Image میتواند تعداد زیادی Container داشته باشد. دقت داشته باشید که میتوانید Containerها را متوقف یا راهاندازی مجدد کنید.
Docker Hub
یک مخزن Saas برای مدیریت و به اشتراک گذاری کانتینرها است. با این قابلیت دیگر نیازی نیست برای هر Image یک Container بسازید. میتوانید Imageهای رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید. افراد دیگر نیز معمولا پروژههای خود را به این Repository اضافه میکنند.
Docker Engine
هسته اصلی داکر است که Container ها را ساخته و اجرا میکند. یک تکنولوژی کلاینت/سرور است. در دو نسخه Enterprise یا Community عرضه میشود. نسخه Community به طور متن باز و کاملا رایگان قابل استفاده است . نسخه Enterprise یک سری قابلیتهای اضافه دارد ولی باید برای آن هزینه پرداخت کنید.
مزایای داکر
- هدر رفت منایع به مقدار بسیار زیادی کاهش مییابد.
- امکان ساخت Image در داکر سبب میشود به راحتی برنامه را در سیستمهای دیگر اجرا کنید.
- به دلیل راهاندازی داکر در سطح سیستم عامل امکان تخصیص منابع به سرورهای دیگر وجود دارد. البته میتوان از ابتدا نیز محدودیتهایی را تعریف کرد.
- داکر متن باز است واجزای اجرایی داکر کاملا استاندارد شدهاند تا كد منبع برنامه را با تمام كتابخانههای سیستم عامل (OS) و وابستگیهای مورد نیاز برای اجرای كد در هر محیطی را با یکدیگر تركیب كنند.
- صرفه جویی در زمان برای توسعه دهندگان
- حجم بسیار کم و به روز رسانی دقیق
- ساخت خودکار کانتینر
- داشتن نسخه پشتیبان از کانتینر
- دسترسی توسعه دهندگان به کتابخانههای کانتینر مشترک
سخن آخر
سخن آخر این است که کانتینر یک ابزار اپن سورس است که به برنامه نویسان کمک میکند در مسیر توسعه، طراحی و ساخت گامهای استوارتری بردارند. برنامه نویسان، افراد فعال در حوزه طراحی سایت، طراحی اپلیکیشن با کمک داکر و کانتینر تمام بخشهای پروژه خود را به یک بسته قابل حمل تبدیل میکنند که در تمام سیستمها قابلیت اجرا شدن را دارد.
در بحث پیرامون این مقاله شرکت کنید