چرخه حیات Container

برنامه‌نویسی در دنیای امروز فراتر از کدزنی و حل مسئله است. امروز برنامه‌نویسان برای رسیدن به درجات شغلی و درآمد بالا باید بتوانند در قالب تیم‌های بزرگ در شرکت‌های دیجیتال یا استارتاپ‌ها فعالیت کنند. تیم‌هایی که هدف آن‌ها توسعه و بهبود یک یا چند نرم‌افزار و به‌روزرسانی آن‌ها برای رفع اشکال است.در این مقاله قصد داریم به مدیریت چرخه حیات Container و راه‌های استخراج عملکرد بهینه از آن بپردازیم.

  

ویدیو پییشنهادی : آموزش داکر
آموزش داکر

 

کار روی نرم‌افزارهای بزرگ بیشتر اوقات نیازمند کار با چند ابزار و در چند محیط کدزنی است. نتورک داکر و در قلب آن کانتینرها این امکان را به تیم‌های برنامه‌نویسی می‌دهند که روی پروژه‌های عظیم و چندبخشی به‌صورت تیمی کار کنند. در واقع داکر با ارائه یک شبیه‌سازی از سیستم‌عامل و ارائه موارد لازم برای اجرا شدن کد به توسعه‌دهندگان اجازه می‌دهد کدشان را روی فضای ابری اجرا کنند. 

داکر چیست و چه کاربردی دارد؟

داکر یک ابزار کاربردی برای تیم‌های برنامه‌نویسی و شرکت‌های دیجیتال است. این ابزار که در سال ۲۰۱۳ به‌صورت رسمی و استاندارد عرضه شد توانست یک مشکل مهم را برای برنامه‌نویسان حل کند. مشکل این بود که برنامه‌نویس وقتی کد خود را برای یک برنامه‌نویس دیگر می‌فرستاد، به‌دلایل مختلفی کد روی سیستم مقصد اجرا نمی‌شد.

عمده‌ترین علت این مشکل مربوط به نبود Dependency های برنامه در سیستم مقصد می‌شد. نتورک داکر به تیم‌های نرم‌افزاری کمک می‌کند بدون محدودیت سیستم کدهای خود را روی فضای ابریاجرا کنند. داکر یک سرویس پلتفرمی (Platform as a service) است و از تعدادی کانتینر تشکیل می‌شود.

نقش کانتینر در داکر چیست؟

نقش کانتینرها در داکر

 

کانتینرها واحد‌های استاندارد شده نرم‌افزاریهستند که به توسعه‌دهنده برای ایزوله کردن اپلیکیشن از محیط خود کمک می‌کنند. یعنی کد دیگر روی محیط کامپیوتر شما و بر اساس فایل‌های موجود در آن اجرا نمی‌شود. شما کدتان را روی فضای ابری کانتینرها اجرا می‌کنید و دیگران هم می‌توانند با دسترسی به آن ابر کد را به‌همان‌صورت دیده و در صورت نیاز تغییراتی در آن ایجاد کنند.

در واقع با وجود کانتینرها شما برای اجرای هر کدی فقط نیاز به متن کد، runtime و ابزار و کتابخانه‌های پیش‌فرض سیستم خود دارید. کانتینر را به نوعی می‌توان جانشین ماشین مجازی (Virtual Machine) دانست. ماشین‌های مجازی شبیه‌سازی یک سیستم کامپیوتری بودند در حالی که کانتینر شبیه‌سازی سیستم‌عامل است.

 

مقاله پییشنهادی : داکر چیست
داکر چیست و چرا باید آن را بیاموزیم؟

چرخه حیات Container‎ به چه شکل است؟

برنامه‌نویسی در دنیای امروز خیلی پیچیده و گسترده شده است. در حال حاضر استفاده از داکر و کانتینر برای بسیاری از پروژه‌ها حیاتی به‌نظر می‌رسد. اما باید توجه داشت که کار با کانتینر به این سادگی‌ها نیست. هر کانتینر یک چرخه حیات ۶ مرحله‌ای دارد که توسعه‌دهندگان باید از آن آگاه بوده و برای گذر از تک‌تک مراحل آن برنامه داشته‌باشند. در ادامه این ۶ مرحله را همراه بهترین راه برای عبور از هر کدام شرح می‌دهیم.

چرخه حیات کانتینر

چرخه حیات کانتینر با دریافت (Acquire) اطلاعات یا ظرفیت‌ها (capabilities) آغاز می‌شود. این اتفاق از طریق مفهومی به نام image ممکن می‌شود. شما ابتدا یک image از اطلاعات یا ظرفیت‌های مورد نظر در داکر ایجاد می‌کنید و دیگر اعضای تیم یا خودتان می‌توانید از این image کپی تهیه کرده و انشعابات جدید (بدون دست خوردن به image اصلی بسازید). این قابلیت کانتینر باعث راحت‌تر شدن ساخت نسخه‌های مختلف از نرم‌افزار و آزمایش ویژگی‌های جدید روی آن می‌شود.

 

ویدیو پییشنهادی : آموزش داکر مقدماتی
آموزش داکر

 

مهم‌ترین نکته برای این مرحله پاسخ درست به این سوال است که «از کجا باید شروع کنیم؟». در واقع باید با توجه به هدف نهایی شرکت یا تیم، مناسب‌ترین نقطه شروع را از جهت اطلاعات و ظرفیت‌ها تعیین کنیم.

قدم دوم ساخت (Build) نام دارد

حالا باید با استفاده از اطلاعات بارگذاری شده در مرحله قبلی شروع به ساخت و اجرای اپلیکیشن کنیم. در این مرحله بخش‌های اساسی برنامه نهایی ساخته، چیده و خودکارسازی می‌شوند.

این مرحله شامل رساندن (Deliver) برنامه‌ی ساخته شده به سیستم‌های اجرایی (مثل سرور ها) است. تا اینجا ما درون تیم برنامه را ساخته‌ایم و از اجرای سالم و درست آن مطمئن شده‌ایم. حالا می‌خواهیم به نسخه نهایی و قابل اجرا روی کامپیوترهای میزبان نهایی برسیم.

مرحله بعدی استقرار (Deploy) کانتینر است

در مرحله استقرار اپلیکیشن برای اجرا ارائه می‌شود و سپس نیازهای موجود برای تغییر مشخص خواهند شد. توسعه‌دهندگان اگر بخواهند اپلیکیشن‌های مقیاس‌پذیر تولید کنند نیاز به عملکرد خوبی در این مرحله خواهند داشت.

 

مقاله پییشنهادی : نتورک داکر چیست
نتورک داکر چیست

 

در اینجا برنامه نهایی به مرحله اجرا (Run) رسیده است و کانتینرهای موجود در داکر با به‌هم‌پیوستن شرایط آن را فراهم می‌کنند. گاهی در این مرحله نیاز است برنامه به سرویس‌ها و برنامه‌های خارجی متصل شود.

در نهایت به نگهداری (Maintain) از برنامه می‌رسیم. برنامه‌ها همیشه بعد از اجرا در سیستم‌های میزبان به موارد خاصی برمی‌خورند که باگ نامیده می‌شود. در اینجا برنامه‌نویس با بررسی کد خود و ارائه نسخه‌های جدید از اتفاق‌افتادن دوباره آن جلوگیری می‌کند. این مرحله گاهی از خود ساخت برنامه اهمیت بیشتری دارد چون که یک برنامه وقتی پر از اشکال باشد کاربران خود را از دست خواهد داد.

راهکارهای مدیریت اثربخش چرخه حیات Container‎

اولین و شاید مهم‌ترین قدم، رسیدن به شناخت کامل در مورد چرخه حیات کانتینر است. باید توجه داشت که پروژه‌های برنامه‌نویسی همواره متفاوت و پیچیده‌اند و برای همین فرمول خاصی در مورد آن‌ها وجود ندارد. یک مدیر پروژه یا سرپرست تیم برنامه‌نویسی باید بتواند گام‌های مختلف چرخه حیات را در مورد پروژه خود شناسایی کرده و متناسب با آن‌ها بهترین روندها، ابزار و اتوماسیون‌ها را انتخاب کند.

کانتینرها از صفر توسط تیم نرم‌افزاری ساخته نمی‌شوند. بلکه معمولا image یک کانتینر آماده (مثل کانتینر داکرهاب یا IBM) به‌صورت public یا private مورد استفاده قرار می‌گیرد. ساخت و برنامه‌نویسی کانتینر از صفر بسیار هزینه‌بر و وقت‌گیر خواهد بود اما در عوض تمام ویژگی‌های مورد نیاز تیم را به‌صورت شخصی‌سازی شده در خود دارد. استفاده از کانتینر آماده کم‌هزینه‌تر و راحت‌تر است اما چالش‌های خاص خود را دارد. برای مثال باید dependency های موجود در آن به‌صورت دقیق توسط اعضای تیم شناخته شوند. کانتینر انتخاب شده باید بیشترین تناسب ممکن را با نیازهای پروژه داشته باشد.

 

 
یک نفر باید مسئول تست کانتینر آماده باشد. این فرد تمام ویژگی‌های کانتینر را مطالعه کرده و آن‌ها را برای اعضای تیم توضیح می‌دهد. قبل از همه‌چیز هم کانتینر را برای بررسی صحت و سلامت تست می‌کند.

راه اندازی یک کانتینر ساده چگونه است؟

راه اندازی داکر

برای راه‌اندازی یک کانتینر ساده لازم است ابتدا آن را با دستور زیر بسازیم:

این دستور یک لایه قابل Write روی image مورد نظر ایجاد کرده و آن را آماده اجرای دستور می‌کند. شماره (ID) کانتینر روی STDOUT خروجی گرفته شده است. با استفاده از docker run می‌توانید این کانتینر را راه‌اندازی کرده و با docker start می‌توانید در هر بخش از برنامه آن را دوباره شروع کنید. پس از اجرای این دستورات حالت کانتینر روی created قرار می‌گیرد.

مثال: راه‌اندازی داکر اوبونتو

این دستورات یک داکر ساده را راه‌اندازی می‌کند. یکی از موارد مهم برای نگهداری اطلاعات، استفاده از Volume ها در داکر است. چون که داکر به صورت پیش‌فرض اطلاعات را در لایه‌ای ذخیره می‌کند که با پاک شدن کانتینر از بین می‌رود.

برای این کار می‌توان همزمان از دو روش ذخیره‌سازی استفاده کرد تا نگهداری بهتری از فایل‌ها انجام شود.

با دستور زیر می‌توان میزان حافظه تخصیص‌یافته به داکر را روی ۱۲۰ گیگابایت تنظیم کرد.

مشخص کردن تکنولوژی ایزوله‌سازی کانتینر

لینوکس تنها یک تکنولوژی ایزوله‌سازی default ارائه می‌دهد اما در ویندوز انتخاب نوع ایزوله‌سازی به‌عهده خود برنامه‌نویس است. با قرار دادن  دستور زیر می‌توانید تکنولوژی ایزوله‌سازی را تعیین کنید.

که در آن به جای Value نوع تکنولوژی ایزوله‌سازی قرار می‌گیرد.

Value عملکرد
default داکر از تکنولوژی پیش‌فرض خود استفاده می‌کند و اگر تکنولوژی پیش‌فرض در داکر موجود نباشد، ویندوز Process را به‌عنوان تکنولوژی ایزوله‌سازی قرار می‌دهد.
process فقط Namespace را ایزوله می‌کند
hyperv ایزوله‌سازی با سبک سرپرستی پارتیشن‌مجور Hyper-V

اگر پرچم isolation– را خالی بگذاریم، مقدار پیش‌فرض در نظر گرفته می‌شود.

کلام آخر در مورد چرخه حیات Container‎

نتورک داکرها ابزارهایی بسیار کاربردی برای تیم‌های برنامه‌نویسی به‌حساب می‌آیند. هر داکر از تعدادی کانتینر تشکیل شده است که از طریق کانال‌هایی به هم متصلند و امکان اجرای بخش‌های مختلف کد روی یک شبیه‌سازی ابری از سیستم‌عامل را به توسعه‌دهنده می‌دهند. البته باید توجه داشت که گرفتن بهترین کارکرد از داکر و کانتینر در گروه شناخت و مدیریت اصولی آن است. مهم‌ترین اصل در مدیریت داکر، مدیریت چرخه حیات Container‎ است. برای مدیریت چرخه حیات کانتینر باید ابتدا آن را درست بشناسیم. در این مقاله مراحل چرخه حیات Container‎ داکر به‌همراه استراتژی‌های پیشنهادی برای کار با آن و دستورات مربوطه بررسی شد.