پکیج نرمافزار در واحدهای استاندارد برای توسعه، ارسال و استقرار
کانتینر یک واحد استاندارد نرمافزار است که کد و تمام وابستگیهای آن را پکیج بندی میکند تا برنامه به سرعت و با اطمینان از یک محیط محاسباتی به محیط دیگر اجرا شود.
یک Image کانتینر Docker یک پکیج نرمافزاری سبک وزن، مستقل و قابل اجرا است که شامل همه چیزهایی است که برای اجرای یک برنامه لازم است یعنی: کد، نیازمندی های اجرا، ابزارهای سیستم، کتابخانههای سیستم و تنظیمات. Imageهای کانتینر در زمان اجرا به کانتینر تبدیل میشوند و در مورد کانتینرهای داکر – Imageها زمانی که روی موتور داکر اجرا میشوند به کانتینر تبدیل میشوند. نرمافزار کانتینری که هم برای برنامههای لینوکس و هم برای برنامههای مبتنی بر ویندوز موجود است، صرف نظر از زیرساخت، همیشه یکسان اجرا میشود. کانتینرها نرمافزار را از محیط خود جدا میکنند و اطمینان میدهند که علیرغم تفاوتهایی که بین محیط های مختلف وجود دارد، یکنواخت کار میکند.
کانتینرهای Docker که روی Docker Engine کار میکنند:
- استاندارد: امکانی را برای کانتینرها ایجاد میکند که آنها در هر مکانی قابل حمل باشند.
- سبک وزن: کانتینرها هسته سیستم عامل دستگاه را به اشتراک میگذارند و بنابراین نیازی به سیستم عامل به ازایه برنامه ندارند، که باعث افزایش کارایی سرور و کاهش هزینههای سرور و صدور دسترسی ها میشود.
- امن: برنامهها در کانتینرها ایمنتر هستند و Docker قویترین قابلیتهای جداسازی پیشفرض را در صنعت ارائه میکند.
کانتینرهای داکر همهجا هستند: لینوکس، ویندوز، مرکز داده، ابر، بدون سرور و…
Docker Engine در سال 2013 به عنوان یک Container Runtime منبعباز معرفی شد. که از منابع محاسباتی موجود در سیستم کانتینرها، به طور خاص در دنیای لینوکس استفاده میگردد، که به عنوان cgroups و namespaces شناخته میشوند. فناوری Docker منحصر به فرد است زیرا بر الزامات توسعهدهندگان و اپراتورهای سیستم برای جدا کردن وابستگیهای برنامه از زیرساخت تمرکز دارد. موفقیت در دنیای لینوکس منجر به همکاری با مایکروسافت شد که کانتینرهای Docker و عملکرد آن را به سرور ویندوز آورد. فناوری موجود از Docker و پروژه منبعباز آن، Moby توسط تمام فروشندگان مرکز داده و ارائهدهندگان ابری مورد استفاده قرار گرفته است. بسیاری از این ارائهدهندگان از Docker برای ارائه سرویس PaaS داخلی خود استفاده میکنند. علاوه بر این، چارچوبهای منبعباز بدون سرور پیشرو از فناوری کانتینر Docker استفاده میکنند.
مقایسه کانتینرها و ماشینهای مجازی
کانتینرها و ماشینهای مجازی مزایای جداسازی و تخصیص منابع مشابهی دارند، اما عملکرد متفاوتی دارند زیرا کانتینرها به جای سختافزار، سیستم عامل را مجازی میکنند. کانتینرها قابل حمل و کارآمدتر هستند.
کانتینرها:
کانتینرها یک لایه جدا کننده نرم افزار هستند که کد و وابستگیها را با هم در قالب یک بسته ارایه میکنند. چندین کانتینر میتوانند روی یک ماشین اجرا شوند و هسته سیستم عامل را با سایر کانتینرها به اشتراک بگذارند که هر کدام به عنوان فرآیندهای ایزوله در فضای کاربری سیستم عامل (User Space) اجرا میشوند. کانتینرها نسبت به ماشینهای مجازی فضای کمتری را اشغال میکنند (Imageهای کانتینر معمولاً دهها مگابایت اندازه دارند)، میتوانند برنامههای بیشتری را مدیریت کنند و به ماشینهای مجازی و سیستم عامل کمتری نیاز دارند.
ماشینهای مجازی:
ماشینهای مجازی (VMs)، یک abstraction از سختافزار فیزیکی هستند که یک سرور را به سرورهای زیادی تبدیل میکنند. hypervisor سخت افزار را به چندین ماشین مجازی اجازه میدهد تا روی یک ماشین واحد اجرا شوند. هر ماشین مجازی شامل یک نسخه کامل از یک سیستم عامل، برنامه، باینریها و کتابخانههای لازم هستند که دهها گیگابایت را اشغال میکند. ماشینهای مجازی همچنین میتوانند سرعت بوت شدن را افزایش دهند.
کانتینرها و ماشینهای مجازی که با هم استفاده میشوند، انعطافپذیری زیادی در استقرار و مدیریت برنامهها فراهم میکنند.
استانداردهای کانتینر و رهبری صنعت
ارایه Docker در سال 2013، انقلابی را در توسعه برنامههای کاربردی با ارایه دادن کانتر ها به صورت راحت و دردسترس آغاز کرد. داکر یک فناوری کانتینر لینوکس را توسعه داد – فناوری قابل حمل، انعطافپذیر و آسان برای استقرار. کتابخانه منبع باز Docker با یک جامعه جهانی از مشارکتکنندگان برای توسعه بیشتر آن شریک شد. در ژوئن 2015، داکر مشخصات مربوط به Image کانتینر و کد مربوط به Runtime را که اکنون به عنوان runc شناخته میشود، به بنیاد کانتینر باز (OCI) اهدا کرد تا به ایجاد استانداردسازی با رشد و بلوغ اکوسیستم کانتینر کمک کند.
به دنبال این تکامل، داکر به پروژه containerd که در سال 2017 به بنیاد محاسبات بومی ابری (CNCF) اهدا شد، ادامه میدهد. containerd یک container runtime استاندارد صنعتی است که از runc استفاده میکند و با تاکید بر سادگی، استحکام و قابلیت حمل ایجاد شده است. Containerd؛ Runtime هسته ای Docker Engine است.
نظرات کاربران