vSphere Integrated Containers به تیمهای فناوری اطلاعات اجازه میدهد که بارِکاری قدیمی و Container را در کنار هم و بدون مشکل بر روی یک زیرساخت، اجرا نمایند. Containerها با استفاده از vSphere Integrated Containers Engine، درقالب ماشینهای مجازی یا به اختصار VM آماده میشوند و درست همان میزان امنیت و عملکرد ماشینهای مجازی در سرورهای VMware ESXi یا Instances vCenter Server را ارائه میدهند.
این مقاله برای آن دسته از مدیرانی و کارشناسان سازمان میباشد که قصد دارند تا از Containerها در محیط vSphere با استفاده از vSphere Integrated Containers بهرهمند گردند.
معرفی Containerها، Imageها و Volumeها
کلمهی Container اینروزها بسیار شنیده میشود. هنگام یادگیری مفهوم Container و چگونگی ارتباط آن با vSphere Integrated Containers، درک مفهوم Runtime و Packaging و تمایز قرار دادن میان آنها، کمک شایانی در یادگیری این مبحث میکند.
مفهوم Runtime درمقوله Container
در ابتداییترین حالت خود، Container صرفاً یک Sandbox است که در آن یک فرآیند میتواند اجرا شود؛ به گونهای که این Sandbox فرآیند مورد نظر را از دیگر فرآیندهایی که بر روی همان سیستم درحال اجرا هستند، ایزولهسازی مینماید. یک Container چرخهی عمری دارد که معمولاً مرتبط به چرخهی عمر فرآیندی که برای اجرای آن طراحی شده است، میباشد؛ بنابراین اگر یک Container را اجرا کنیم و Container فرآیند اصلی خود را به اجرا در میآورد، پس از آنکه فرآیند متوقف شود، Container نیز متوقف خواهد شد. از لحاظ مفهومی، یک Container بسیاری از قابلیتهای یک ماشین مجازی را داراست. تفاوت اصلی میان این دو، لایهی Abstraction میباشد.
- یک Container نرمافزاری، یک Sandbox درون یک Hypervisorمیهمان است و Hypervisor مسئول فراهم نمودن وابستگیهای Container و ایزولهسازی آن میباشد به طوریکه چندین Container از یک هسته سیستم عامل، شبکه و فضای ذخیرهسازی مشابه برخوردار هستند. با توجه به اینکه Container صرفاً تکهای از یک سیستم عاملی در حال اجرا میباشد، بوت نمیشود. آن سیستم عاملی که Container را اجرا مینماید، Host آن Container نامیده میشود.
- از طرف دیگر یک ماشین مجازی در واقع یک Sandbox درون یک Hypervisor است. این Hypervisor است که وابستگیهای ماشین مجازی، همچون دیسکهای مجازی و NICها را برای آن فراهم میکند. یک ماشین مجازی باید سیستم عامل را بوت نماید و چرخهی عمر آن معمولاً بهجای دیگر فرآیندها، به چرخهی عمر سیستم عامل مرتبط است. یک ماشین مجازی طوری طراحی شده است که شدیداً از دیگر ماشینهای مجازی و Host خود ایزوله شده باشد.
جهت مشاوره رایگان و یا راه اندازی زیرساخت مجازی سازی دیتاسنتر با کارشناسان شرکت APK تماس بگیرید. |
یکی از جالبترین وجوه Containerها، طریقهی تعامل آن با State است. هر دادهای که یک Container مینویسد، بهصورت پیشفرض Non-Persistent است و هنگامیکه آن Container پاک شود، داده نیز حذف خواهد شد. اما State میتواند با اتصال به یک Volume و یا ارسالشدن بر روی یک شبکه، ورای طول عمر یک Container باقی بماند. تمام وابستگیهای باینری مورد نیاز یک Container از قبیل کتابخانههای سیستم عامل و باینریهای برنامههای کاربردی، درون Imageها Encapsulate میشوند.
بررسی Packaging
یکی از چشمگیرترین مزایای Containerها این است که به کاربر اجازه میدهد کل محیطی را که یک برنامهی کاربردی به آن نیاز دارد بستهبندی کرده و آن را در هرجایی اجرا نماید. میتوان با مراجعه به Docker Hub ، یکی از صدها هزار برنامهی کاربردی را انتخاب نموده و آن را در هر جایی که Docker بر روی یک OS نصب شده باشد، اجرا کرد. Packaging وابستگیهای باینری، متغیرهای محیطی، Volumeها و حتی پیکربندی شبکه را نیز Encapsulate میکند، این نوع Packaging با نام Image شناخته میشود.
Image یک Template است که Containerهای بسیاری میتوانند از آن Instantiate شوند. فرمت Image Docker، به Imageها اجازه میدهد که درست همانند یک Disk Snapshot، در یک رابطهی Parent-Child قرار بگیرند که این سلسله مراتب Imageی به Containerها اجازه میدهد که وابستگیهای رایج مشابهی داشته باشند. برای مثال ممکن است یک Debian 8 داشته باشیم که یک Child Image با جاوای نصب شده داشته باشد و آن Java Image نیز ممکن است دارای یک Child Image با Tomcat نصبشده باشد. علاوه بر آن Debian 8 میتواند Childهای دیگر همچون PHP، Python و غیره داشته باشد.
تغییرناپذیر بودنِ فرمت Image بدین معنا است که هیچگاه نمیتوان یک Image را اصلاح نمود، بلکه همواره باید یک Image تازه ایجاد کرد. فرمت Image به صورت لایهای میباشد، به این معنی که میتوان لایههایی که بهطور مداوم استفاده میشوند را Cache نمود تا فقط مجبور به دانلود یا آپلود لایههایی شویم که از قبل در اختیار نداریم؛ به عبارت دیگر اگر بخواهیم یک Image خاص را Patch نماییم، باید یک Image تازه ایجاد نموده و تمام Childهای آن را دوباره بسازیم.
مزیت اصلی فرمت Image، قابلیت حمل بودن آن یا Portability است. تا زمانی که مقصدی داشته باشیم که از یک Container Engine برای مثال Docker استفاده کند، میتوان یک Image را دانلود و بر روی آن اجرا نمود. این قابل حمل بودن توسط Registry تسهیل میشود، Registry سرویسی است که Imageها را Index و ذخیره مینماید، میتوان Imageها را از یک محیط توسعه به Registry، یا به یک محیط آزمایشی جهت تأیید و یا به یک محیط عملیاتی وارد نمود. همچنین میتوانیم Image Registry اختصاصی خودمان را اجرا نماییم که بخشی از یک Pipeline توسعه را ایجاد مینماید.
شرح vSphere Integrated Containers
vSphere Integrated Containers از اجزای اصلی ذیل تشکیل شده است:
- vSphere Integrated Containers Engine: یک Container Engine که طوری طراحی شده است تا تمام مزایای Packaging و Runtime مختص به Container را با قابلیتهای سازمانی محیط vSphere ادغام نماید.
- vSphere Integrated Containers Engine Registry: یک Docker Image Registry با قابلیتهای اضافهای همچون Role-Based Access Control یا به اختصار RBAC، همگامسازی (Replication) و غیره.
درحال حاضر هر دوی این اجزا از فرمت Docker Image پشتیبانی میکنند. vSphere Integrated Containers کاملا متن باز بوده و استفاده از آن رایگان میباشد و پشتیبانی از آن در لایسنس vSphere Enterprise Plus گنجانده شده است.
vSphere Integrated Containers برای حل بسیاری از چالشهایی که برای قرار دادن برنامههای کاربردی Containerized شده در محیط تولید مرتبط هستند، طراحی شده است. این نرمافزار مستقیماً از Clustering، Scheduling دینامیک و زیرساخت مجازیسازیشدهی vSphere استفاده مینماید و نیاز به نگهداری ماشینهای مجازی مستقل لینوکس، تحت عنوان میزبان Container را، بی نیاز میکند.
vSphere Integrated Containers Engine به مدیران vSphere اجازه میدهد که یک Endpoint مدیریت Container را بهعنوان یک سرویس به کاربر ارائه دهند. در عینحال، بر روی آن زیرساختی که Endpoint مدیریت Container بر آن تکیه دارد، مدیریت کامل خواهند داشت. تفاوتهای اصلی میان vSphere Integrated Containers Engine و یک محیط قدیمی بر پایه Container موارد ذیل میباشد:
- vSphere ، لینوکس نیست بلکه یک Container Host است:
- Containerها بهعنوان ماشین های مجازی پیادهسازی میشوند نه درون ماشین های مجازی.
- هر Container بهطور کامل از Host و دیگر Containerها ایزولهسازی شده است.
- vSphere محدودیتهای دینامیک منابع Per-Tenant درون یک vCenter Server Cluster ارائه میدهد.
- vSphere، لینوکس نیست بلکه به دلایل زیر یک زیرساخت است:
- میتوان شبکههای vSphere که در Docker Client پدیدار میشوند را بهعنوان شبکههای Container انتخاب نمود.
- Imageها، Volumeها و Container State مستقیماً درون VMFS آمادهسازی میشوند.
- vSphere بهعنوان Control Plane
- از Docker Client برای کنترل مستقیم المانهای انتخابی زیرساخت vSphere استفاده میشود.
- یک Container Endpoint Service-as-a-Service بهعنوان یک سطح تجریدی از یک سرویس ارائه میشود، نه به عنوان یک IaaS.
vSphere Integrated Containers Engine طوری طراحی شده است که سریعترین و راحتترین راه برای آمادهسازی هر بارِ کاری مبتنی بر لینوکس دارد، البته اگر آن بارِ کاری را بتوان بهعنوان یک Docker Image، Serialized نمود.
ــــــــــــــــــــــــــ
بررسی ویژگی های vSphere Integrated Containers Engine – قسمت اول
بررسی ویژگی های vSphere Integrated Containers Engine – قسمت دوم
بررسی ویژگی های vSphere Integrated Containers Engine – قسمت سوم (پایانی)