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