از لحاظ فنی، اموزش انلاین Docker مجموعهای از یک یا چند پردازه است که از دیگر بخشهای سیستم، ایزوله شدهاند و فایلهای لازم برای اجرای کد را شامل میشوند. محتویات یک Container را میتوان مانند توزیعی از لینوکس در نظر گرفت که تمامی Packageها، کتابخانهها، فایلهای پیکربندی و سایر موارد را در برمیگیرد، حجم بسیار کمی دارد و در زمان بسیار کوتاهی میتوان آن را نصب کرد.
به شکل کلی، Container در مقایسه با ماشین مجازی یا Virtual Machine استفاده از منابع را بهینه میکند، رابط کاربری استانداردی دارد، ایزولهسازی بهتری بین پردازهها دارد، زمان بوت پایینتری دارد و به عنوان یک بخش کوچک از یک نرمافزار بزرگ به خاطر داشتن ماژولاریتی بالا بهتر مدیریت میشود. همچنین، برنامههای Multi-Container به کمک ابزارهایی مانند Kubernetes بین چندین ابر بهتر ساماندهی میشوند.
Docker چیست؟
Container واحد استانداردی از نرمافزار است که در کنار کد اپلیکیشن، تمام ملزومات اجرای آن را نیز به همراه دارد تا بتوان آن را به سادگی از یک محیط پردازشی به محیط پردازشی دیگر منتقل کرد. این مفهوم اولین بار در سال ۲۰۰۰ معرفی شد ولی در سال ۲۰۱۳ و با ظهور پروژه آموزش داکر رایگان به شکل جدی مورد توجه قرار گرفت.
Docker Container Image یک بسته سبک قابل اجرای نرمافزاری است که تمام آنچه برای اجرای یک برنامه لازم است را در خود دارد. این بسته شامل مواردی مانند: Code، Runtime، System Tools، System Libraries و تنظیمات میشود.
از امکاناتی که به وسیله Docker برای تیمها فراهم شده است، سادهتر شدن کار روی پروژههای نرمافزاری است. پیش از این، زمانیکه توسعهدهنده تکه کدی را برای تستکننده ارسال میکرد، یکسان نبودن کتابخانههای دو طرف باعث به مشکل برخوردن فرآیند میشد. با استفاده از آموزش Docker دوران آکادمی و با ضمیمه کردن تمام ملزومات اجرای کد در Container، مشکلاتی مانند این از بین رفته است.
از نظر فنی، Container یک یا مجموعهای از پردازههای ایزوله شده است. از این نظر، Container از یک سیستمعامل مستقل مانند آنچه در ماشین مجازی وجود دارد، متفاوت است. برای این ایزولهسازی از دو قابلیت Namespaces وControl Groups کرنل لینوکس استفاده میشود. با Container میتوان از توزیعهای مختلف لینوکس به شکل همزمان روی یک Host که Kernel لینوکس را در اختیار قرار میدهد، استفاده کرد.
پیکربندی و مدیریت Container بدون استفاده از Docker و به وسیله Namespaceها و Control Groupها کار بسیار دشواری است، اما به کمک از Docker، بدون آنکه درگیر جزئیات ریز فنی ماجرا شویم، میتوانیم از قابلیت Container به بهترین شکل استفاده کنیم.