بازی SUPER MARIO BROS در FARGATE (سری کانتینرها) – #EP 1

سلام دوستان، این مجموعه شامل چندین قسمت با هدف توضیح نحوه استفاده از یک برنامه کانتینری در AWS به روشی کاملاً سرگرم کننده خواهد بود. ما چندین موضوع محاسباتی را پوشش خواهیم داد و در پایان یک بازی در حال اجرا بر روی یک خوشه fargate در AWS خواهیم داشت. در قسمت کنونی، مفاهیم کانتینریسازی و برخی موضوعات مرتبط را میفهمیم، برنامهای را که بعداً در کلاستر fargate خود در ماشین محلی خود استفاده خواهیم کرد، اجرا کنید.
ابتدا، بیایید مفاهیمی را که به ما در درک کانتینرها کمک می کند، درک کنیم. باید در مورد کرنل صحبت کنیم که برنامه ای است که ارتباط بین سخت افزار و نرم افزار را مدیریت می کند. مسئول اجازه دادن به برنامهها برای اجرا، خواندن و نوشتن آدرسها روی دیسک و حافظه، مدیریت استفاده از منابع موجود در دستگاه، زمانبندی فرآیندها برای اجرا و غیره است.
هر سیستمعامل پیادهسازیهای متفاوتی برای هسته خود دارد، اما همه آنها مسئول کنترل سختافزار هستند.
برای اجرای یک سیستمعامل در داخل دیگری، باید از Hypervisor استفاده شود، که فرآیندی است که یک یا چند سیستمعامل را قادر میسازد تا در یک سیستم عامل میزبان اجرا شوند. به این ترتیب، عملکرد آن برای کنترل دسترسی سیستم عامل (ماشین مجازی) به دستگاه های سخت افزاری است.
2 نوع هایپروایزر وجود دارد، هایپروایزر Bare-Metal و Hypervisor میزبان.
در Bare Metal Hypervisor، نرم افزار مستقیماً بر روی سخت افزار دستگاه اجرا می شود و یک سیستم عامل مجازی را در بالای لایه هایپروایزر اجرا می کند.
در «Hosted Hypervisor»، مجازیسازی زمانی اتفاق میافتد که یک برنامه مجازیسازی سیستمعامل بر روی سیستمعامل دستگاه نصب شود.
مانند جعبه مجازی
CGROUPS
ما نمی توانیم در مورد گروه های کنترل لینوکس یا cgroup هایی که توسط مهندسان گوگل ایجاد شده اند صحبت نکنیم. ما می توانیم cgroup ها را به عنوان یک ابزار هسته لینوکس تعریف کنیم که استفاده از منابع را برای فرآیندهای کاربر ایزوله و کنترل می کند.
این فرآیندها را می توان در فضاهای نام قرار داد، که مدیریت تخصیص منابع در هر فضای نام می تواند برای محدود کردن مقدار کلی استفاده از شبکه، حافظه، استفاده از CPU و غیره استفاده شود.
عملکرد فضاهای نام این است که منابعی را که توسط یک فرآیند به آنها دسترسی پیدا می کند، تنها منابعی هستند که سیستم در اختیار دارد، و فضاهای نام را به ابزاری جداسازی برای فرآیندهایی که هسته یکسانی دارند تبدیل می کند.
cgroup ها ایجاد کانتینرهای LinuX را ممکن کردند. این یکی از ارکان ایجاد کانتینرهایی بود که در حال حاضر روی آن کار می کنیم، داشتن مزیت cgroups و جداسازی فضای نام برای ایجاد یک محیط مجازی با فضای پردازش و شبکه مجزا.
ظروف
کانتینرها مانند محیط های ایزوله در یک سرور هستند، با هدف تفکیک مسئولیت ها و توانایی جداسازی فرآیندهای هر منبع.
یک کانتینر دارای گروهی از فرآیندهای در حال اجرا از یک تصویر است که تمام فایل های لازم را فراهم می کند. کانتینرها هسته یکسانی دارند و فرآیندهای برنامه را از بقیه سیستم عامل جدا می کنند.
کانتینرها سیستم فایل و IP اختصاص داده شده خود را دارند، بسیار سبک وزن هستند و راه اندازی و راه اندازی مجدد معمولاً بسیار سریع است زیرا نیازی به بوت کردن کرنل در هر بار نیست.
کانتینر همان VM نیست. با توجه به وبلاگهای UOL، یک کانتینر میتواند هسته سیستم عامل یکسانی را به اشتراک بگذارد، میتواند محیطهای ایزولهای ایجاد کند که در آن برنامههای مختلف بتوانند به طور همزمان اجرا شوند، زیرا تقسیم بر اساس منابع موجود، مانند حافظه و پردازش انجام میشود. از سوی دیگر، یک ماشین مجازی به یک ماشین فیزیکی اجازه میدهد تا سختافزار دیگری را با سیستمعامل متفاوت، دیسک سخت و مستقل از سختافزار اصلی میزبانی کند.
DOCKER
Docker امروزه پرکاربردترین فناوری کانتینری است که آن را به ابزار استاندارد صنعتی برای کانتینرسازی تبدیل کرده است.
ظرف داکر از یک تصویر تشکیل شده است. تصویر پایه شامل سیستم عامل کانتینر است که می تواند با سیستم عامل میزبان متفاوت باشد و این تصویر از چند لایه تشکیل شده است.
اولین لایه لایه پایه است که وظیفه بوت شدن را بر عهده دارد و شامل هسته و بخش بوت bootfs می شود. اینجاست که cgroup ها برای کنترل فرآیند، فضای نام و نگاشت دستگاه ایجاد می شوند.
لایه دوم لایه ای است که شامل یک پایه تصویر است. این لایه rootfs می تواند یک یا چند سیستم عامل باشد.
آخرین لایه لایه انتزاعی است، دارای مجوز نوشتن است، اما تغییرات در تصویر پایه منعکس نمی شود، فقط در لایه ای که سیستم تجسم می کند. در این لایه است که کاربر کانتینر کار می کند و می تواند تصاویر جدیدی ایجاد کند.
داکر HUB یک مخزن است که فقط تصاویر داکر دارد و می توانیم به چندین تصویر آماده برای استفاده دسترسی داشته باشیم.
برای کسب اطلاعات بیشتر در مورد docker، ابزارهای docker، ایجاد تصویر، سیستم های ذخیره سازی docker، اینجا را کلیک کنید.
دست در
بیایید اولین کانتینر محلی خود را حاوی تصویر بازی خود بارگذاری کنیم، که در آینده آن را در کلاستر fargate در AWS آپلود خواهیم کرد.
اولین کار نصب Docker است. برای نصب اینجا کلیک کنید. می توانید دستورات Docker را در اینجا بررسی کنید.
بعد، تصویر را دانلود کنید. ما تصویر را ایجاد نمی کنیم، در حال حاضر برای استفاده در داکر هاب است.
برای آن از دستور زیر استفاده کنید:
docker pull pengbai/docker-supermario
در دستور قبلی، تصویر docker بر روی دستگاه شما دانلود شده بود، اکنون یک ظرف با دستور زیر برای اجرای این تصویر اجرا می کنیم. اجازه دهید پورت های لازم را به عنوان پارامتر برای بالا بردن تصویر ارسال کنیم.
docker run -d -p 8600:8080 pengbai/docker-supermario
با پورت 8080 کانتینر نقشه برداری اجرا کنید و از ناوبر http://localhost:8600 استفاده کنید
اکنون می توانید بازی را به صورت محلی انجام دهید.
ادامه دارد …