Container چیست؟ کاربرد کانتینرها در سرورها
داکر در سال 2013 میلادی به عنوان یک موتور متنباز منتشر شد. در فناوری فوق مفاهیم محاسباتی کانتینرها و بهویژه مفاهیم اولیه دنیای لینوکس، مثل فضاهای نام به بهترین شکل استفاده شدهاند. فناوری داکر به این دلیل منحصر به فرد است که بر نیازمندیهای توسعهدهندگان و اپراتورهای سیستم برای ایزوله کردن وابستگیهای سیستمی از زیرساختشان متمرکز است.
فهرست محتوا
مفهوم داکر چیست؟
داکر (Docker) پروژه منبع بازی است که برای استقرار برنامهها در کانتینرها (Containers) از یک لایه انتزاعی مضاعف و مجازیسازی سطح سیستمعامل به شکل خودکار پشتیبانی میکند. داکر را باید فناوریی توصیف کرد که به کاربران و توسعهدهندگان این امکان را میدهد تا به سادهترین شکل برنامههای کاربردی را درون یک جعبه شن (Sandbox) که به آن کانتینر گفته میشود توسعه داده و روی سیستمعامل میزبان اجرا کنند. لازم به توضیح است که سندباکس یک محدوده آزمایشی روی یک سیستم است که امکان اجرای برنامهها بدون آنکه تاثیر مستقیمی روی سختافزار یا نرمافزارهای سیستمعامل میزبان بگذارند را ارایه میکند. داکر به توسعهدهندگان این امکان را میدهد تا یک برنامه را به همراه تمام وابستگیهای (Dependancies) آن در یک واحد استانداردسازی شده برای توسعه نرمافزار بستهبندی کنند. در این روش برعکس ماشینهای مجازی، کانتینرها سربار (Overhead) زیادی ندارند و میتوان از آنها به منظور استفاده بهینه از منابع بهره برد.
تفاوت کانتینر و ماشین مجازی؟
با استفاده از ماشین مجازی میتوان سختافزار را به چند سیستمعامل اختصاص داد، یعنی ماشینهای مجازی (VM) به ماشین میزبان اضافه میشوند تا از طریق اشتراکگذاری سختافزار بین چند مصرفکننده، به بهترین شکل از منابع سختافزاری استفاده کرد. در این حالت، اینگونه به نظر میرسد که هر کاربر سرور مخصوص به خود را دارد. با اینحال، کانتینرها، سیستمعامل را مجازیسازی میکنند و بخشهای مجازیسازی شده را برای اجرای برنامههای کانتینر به کار میگیرند.
یکی از برنامه های کاربردی که سرویس مدیریت شده مجازی را در اختیار کارمندان می گذارد و امکان دسترسی به منابع سرور را فراهم میکند، VMware Horizon Client است که در مقاله آموزش نصب Horizon View Client به صورت کامل کارکرد، مزایا و نحوه راه اندازی آن توضیح داده شده است.
یکی از بزرگترین مزایای استفاده از فناوری کانتینر (Container)، سرعت ساخت و راهاندازی زیاد آنها در مقایسه با ماشینهای مجازی است. علاوه بر این، کانتینرها با حذف وابستگیها و از بین بردن ناسازگاریهای نرم افزاری، افزایش بهرهوری در مرحله توسعه نرمافزارها را به همراه دارند. در اینجا، هر کانتینر به عنوان یک سرویس منفرد شناخته میشود و در صورت نیاز میتوان به راحتی آنرا بهروز رسانی کرد بدون اینکه دغدغهای از بابت تداخل با سایر نرمافزارهای نصب شده در سیستم داشته باشیم. علاوه بر این، به دلیل اینکه پردازههای موجود در کانتینر ایزوله هستند، هر گونه بهروزرسانی یا تغییر در کانتینر هیچ تاثیری روی سایر کانتینرها نخواهد گذاشت.
تفاوت کانتینر و داکر
کانتینر یک مکانیزم نرمافزاری استاندارد است که کدها را به همراه تمام وابستگیهای آنها بستهبندی میکند تا امکان اجرای سریع و قابل اطمینان برنامه توسعه داده شده در محیطهای محاسباتی مختلف به وجود آید. دنیای نرمافزارهای کاربردی به سمت اجرای برنامههایی سوق پیدا کرده که درون ماشینهای مجازی اجرا میشوند که خود این ماشینهای مجازی نیز روی یک سیستمعامل میزبان نصب شدهاند و درون آنها سیستمعامل میهمان اجرا میشود. این سیستمعامل مهمان روی سختافزار مجازی به وسیله سیستمعامل میزبان در سرور اجرا میشود.
ماشینهای مجازی در ایزوله کردن پردازههای مرتبط با برنامههای کاربردی عملکرد خوبی دارند. با استفاده از ماشینهای مجازی به ندرت شاهد مشکلی در سیستمعامل میزبان هستیم که باعث میشود نرمافزارهای در حال اجرا روی سیستمعامل میزبان بدون مشکل کار کنند. البته این حالت خالی از اشکال نیست. ایزولهسازی در ماشینهای مجازی هزینهبر است، زیرا محاسباتی که صرف مجازیسازی سختافزار برای استفاده یک سیستمعامل مهمان میشوند، منابع را به شدت مصرف میکند. در نقطه مقابل، کانتینرها از رویکرد متفاوتی استفاده میکنند و از طریق بهکارگیری قابلیتهای سطح پایین سیستمعامل میزبان، به میزان زیادی ایزولهسازی را نسبت به ماشینهای مجازی با توان محاسباتی کمتری انجام میدهند.
ماشینهای مجازی با انتزاعی کردن سختافزار فیزیکی یک سرور را به چند سرور تبدیل میکنند. لایه نرمافزاری برای ساخت محیط مجازی که به آن هایپروایزر (Hypervisor) گفته میشود به ماشینهای مجازی این امکان را میدهد تا روی یک ماشین واحد اجرا شوند. هر ماشین مجازی یک نسخه کامل از سیستمعامل، برنامه کاربردی، پردازهها و سرویسهای مخصوص به خود، کتابخانههای مورد نیاز و موارد این چنینی را دارد که چند گیگابایت فضا از هارددیسکها را اشغال میکنند. علاوه بر این، راهاندازی ماشینهای مجازی زمانبر است.
مزایا و معایب استفاده از Container
مزیتهای استفاده از ساز و کارهای ایزولهسازی و تخصیص منابع در کانتینرها و ماشینهای مجازی مشابه هستند، اما این دو فناوری به شکل متفاوتی اینکار را انجام میدهند، بهطوری که کانتینرها به جای مجازیسازی سختافزار، سیستمعامل را مجازیسازی میکنند و به همین دلیل قابلیت حمل بیشتری دارند و نسبت به ماشین مجازی عملکرد بهینهتر و سریعتری دارند. در سویی دیگر، کانتینرها مفهوم انتزاعی را در لایه برنامه کاربردی ارایه میکنند تا کدها و وابستگیها همه با هم بستهبندی شوند. به همین دلیل چند کانتینر قابلیت اجرا روی یک ماشین مشترک را دارند و این امکان وجود دارد تا هسته سیستمعامل را با دیگر کانتینرها بهاشتراک قرار دهد تا هر کدام از آنها در فضای کاربری به شکل فرایندهای مجزا و مستقل از هم اجرا شوند.
همچنین، کانتینرها به فضای ذخیرهسازی کمتری نسبت به ماشینهای مجازی نیاز دارند. علاوه بر این، کانتینرها میتوانند برنامههای بیشتری را پشتیبانی کنند و با استفاده از آنها نیاز به ماشینهای مجازی و سیستمعاملها تا حد زیادی کمتر میشود. با اینحال، کانتینرها معایبی نیز دارند. بهطور مثال، محدود به سیستمعاملهای لینوکس و ویندوز هستند، به دلیل اینکه سرعت ساخت و آزمایش برخی از برنامههای کاربردی مبتنی بر کانتینر زیاد است، شبکههای قدیمی نمیتوانند به سرعت به این مسئله واکنش نشان دهند و علاوه بر این، امنیت آنها نیز بحثبرانگیز است. برنامههای مبتنی بر کانتینر به مهارت فنی زیادی نیاز دارند و گاهی چند تیم روی بخش کوچکی از برنامه کاربردی کار میکنند. به همین دلیل معماری مبتنی بر کانتینر، پیچیده است و دانش فنی زیادی نیاز دارد.
کاربرد تکنولوژی کانتینر و داکر در سرورهای HP
یکی از بزرگترین عواملی که باعث شده فناوری داکر مورد توجه سازمانها و توسعهدهندگان بزرگ قرار گیرد به همکاری دوجانبه شرکت داکر و شرکت اچپی باز میگردد که قدمتی نزدیک به یک دهه دارد. بهطوری که امروزه زیرساختها و مولفههای فنی مورد نیاز برای دسترسی به داکر روی همه سرورها و پلتفرمهای همگرا و فراهمگرای شرکت اچپی تعبیه شده و کاربران تجهیزات اچپی میتوانند از قابلیتهای نهان و آشکار داکر به شکل بهینه استفاده کنند. با اینحال، یکی از مهمترین دلایلی که باعث شده تا فناوری کانتینر و داکر روی سرورهای اچ پی عملکرد خوبی داشته باشند به پشتیبانی خوب اچپی از زیرساخت Docker Datacenter باز میگردد. آمارها نشان میدهند شرکتهایی که از فناوری مذکور همراه با سرورهای اچپی استفاده میکنند چندین برابر نسبت به نمونههای مشابه قادر به استفاده از منابع سیستمی هستند و علاوه بر این سرعت انتقال برنامهها نیز 10 برابر سریعتر از نمونههای مشابه میشود.
در همین ارتباط، دو شرکت اچپی و داکر خبر از پشتیبانی گسترده از مشتریان اچپی دادهاند، به ویژه مشتریانی که از زیرساخت مرکز داده داکر (Docker Datacenter) استفاده میکنند. به بیان دقیقتر، اگر مشتری اچپی باشید و قصد استفاده از زیرساخت مذکور را داشته باشید، در صورت بروز مشکل بخش پشتیبانی اچپی از شما حمایت میکند و علاوه بر این دسترسی به فناوری مایکروسرویسها را نیز فراهم میکند. لازم به توضیح است که داکر از HPE Linux به خوبی پشتیبانی میکند و محصولات نرمافزاری مانند نرم افزار مدیریتی OneView و ابرمحور اچپی همچون سرورهای سینرجی از داکر پشتیبانی میکنند. بنابراین اگر از سرورهای اچپی مثل Apollo، Cloudline و پرولیانتها استفاده میکنید بدون مشکل قادر به استفاده از داکر هستید. علاوه بر این، ایمیجهای داکر برای تجهیزات ذخیرهساز تحت شبکه (NAS) نیز در دسترس قرار دارند.