Container در کامپیوتر چیست؟ (قسمت اول)
فهرست مطالب
Toggleشاید برای شما اتفاق افتاده باشد که بخواهید نرم افزاری را از یک محیط به محیط دیگر انتقال دهید. اما نگران این موضوع هستید که آیا این نرم افزار در محیط جدید نیز بدون مشکل اجرا میشود یا خیر؟ این کار میتواند انتقال نرم افزار از لپتاپ شخص برنامه نویس به محیط تست و یا از یک سرور فیزیکی موجود در دیتاسنتر به یک ماشین مجازی در ابر های خصوصی یا عمومی باشد. در این آموزش شما را با Container ها آشنا میکنیم تا با خیال راحت نرم افزار را از محیطی به محیط دیگر انتقال دهید.
Container چیست؟
کانتینر ها یک پکیج نرم افزاری، شامل کد های اپلیکیشن به همراه کتابخانه ها و dependency های آن هستند. در نتیجه این اپلیکیشن میتواند در محیطی دیگر مثل ابر های خصوصی یا عمومی، ماشین مجازی و… جدا از بقیه فرایند ها به صورت قابل اطمینان کار کند.
کانتینر ها بر خلاف مجازی سازی سرور و سیستم عامل، ایمیج سیستم عامل را در این پکیج جای نمیدهند، بنابراین سبکتر هستند و قابلیت انتقال بالاتری دارند. همینطور اگر اپلیکیشنهای بزرگتری را بخواهید انتقال دهید، چندین کانتینر میتوانند به صورت یک یا چند کلاستر کانتینر ایجاد شوند.
کاربرد Container
آیا تا به حال تجربه داشتهاید که نرم افزاری را از کامپیوتری به کامپیوتر دیگر انتقال دهید، که ناگهان در کامپیوتر دوم با مشکلات و باگ هایی رو به رو شود، در حالی که در کامپیوتر اول به درستی کار میکرد؟ این موضوع به دلیل تفاوت در محیط کامپیوتر ها است. برخی از این تفاوتها را میتوان مواردی از قبیل سیستم عامل، کتابخانههای SSL، فضای ذخیره سازی، امنیت و حتی توپولوژی شبکه دانست.
در ادامه به برخی از کاربرد های کانتینر ها اشاره می کنیم:
- Microservice ها: با استفاده از کانتینر ها میتوان به سادگی Microservice ها را از هم جدا کرد، پیاده سازی کرد و توسعه داد.
- اینترنت اشیا: از آنجایی که کانتینرها نرم افزار های بسته بندی شده را بدون مشکل انتقال میدهند، به همین دلیل مناسب برای نصب و بروزرسانی اپلکیشنهایی هستند که روی دستگاههای اینترنت اشیا اجرا میشوند.
- DevOps: افزایش سرعت DevOps ها به این دلیل است که این کار سرعت انتقال نرم افزار از کامپیوتر محلی به سرور های ابری را افزایش میدهد.
- انتقال اپلیکیشن به فضاهای ابری پیشرفته: انتقال نرم افزارها (حتی برخی از نرم افزارهای قدیمی) به Cloud Hybrid و Multi-cloud
- دستکاری کردن کد های اپلیکیشن ها برای کانتینر: با وجود این که دستکاری کد به نسبت انتقال کانتینر عملیات زمانبری است اما این کار نهایت استفاده از محیط کانتینر را فراهم میآورد.
Container ها چگونه کار می کنند؟
برای فهمیدن کانتینر ها، باید درباره مجازی سازی اطلاع داشته باشید. virtualization یا همان مجازی سازی به صورت خلاصه به معنی اشتراک گذاری منابع مثل رم، پردازشگر، فضای ذخیره سازی و شبکه بین ماشینهای مجازی است، به گونه ای که این ماشینهای مجازی از منابع اصلی که به اشتراک گذاشته شدهاند اطلاعی ندارند.
هنگامی که سیستم عامل یا کانتینری را مجازی سازی میکنید، منابع کامپیوتر میزبان برای استفاده به وسیله اجزای مجازی سازی شده، به بخشهایی تقسیم میشوند.
کانتینر ها سیستم عامل یک ماشین را در سطح کاربر مجازی میکنند. مجازی سازی فضای کاربری از مکانیزمهای موجود که برای جداسازی اکانتها و برنامههای کاربران در سیستم عامل است، استفاده میکند.
سیستم های کانتینری از یک ابزار دستوری استفاده میکنند. اعضای تیم DevOps با این ابزار دستوری کار میکنند تا کانتینر های مربوطه را ایجاد کنند. این ابزار مسئول تقسیم کردن منابع کاربری سیستم عامل، تخصیص این منابع به کانتینر ها و در نهایت اجرا و مانیتور کردن کانتینر ها هستند.
تفاوت بین کانتینر و مجازی سازی چیست؟
در تکنولوژی مجازی سازی، پکیجی که برای انتقال ایجاد میشود یک “ماشین مجازی” است که حاوی سیستم عامل و اپلیکیشن مربوطه میشود. یک سرور فیزیکی که سه ماشین مجازی دارد در حقیقت یک هایپروایزر دارد که سه سیستم عامل مجزا روی این هایپروایزر نصب می شوند.
از طرف دیگر سروری که سه اپلیکیشن کانتینر شده به وسیله “داکر” دارد، یک سیستم عامل را اجرا میکند و هر کانتینر کرنل، سیستم عامل را با بقیه کانتینرها به اشتراک میگذارد. بخش های اشتراک گذاری شده سیستم عامل به صورت read-only هستند با این حال هر کانتینر mount (نحوه دسترسی به کانتینر) مختص به خودش را به منظور write کردن دارد. نتیجه میگیریم که کانتینرها به مراتب سبکتر هستند و منابع به مراتب کمتری به نسبت ماشینهای مجازی مصرف میکنند.
نتیجه گیری
در این آموزش با کلیات کانتینرها آشنا شدید. کانتینرها خصوصا برای برنامه نویسان و تیمهای DevOps مزایای زیادی را به ارمغان آورده اند. در آموزشهای بعدی شما را با انواع کانتینرها (مثل Docker و Kubernetes) آشنا میکنیم.