How to Deploy Portainer with Podman on Linux
اگر توسعه دهندهای هستید که امیدوار به ساخت یک برنامه نرم افزاری هستید و در محیط توسعه و استقرار تازه کار هستید، این پست برای شما مناسب است.
مطالعه پیشینه
با توجه به پروژهای برای ساخت یک وب سایت تجارت الکترونیک، به احتمال زیاد یک توسعه دهنده (پشته MERN) خواهید یافت که از کنترل نسخه Git استفاده میکند و پایگاه کد خود را بر روی ابزارهای IDE یا ویرایشگرهای متن مناسب توسعه میدهد. با ساخت کامل کد پروژه خود، مشکلات با استقرار شروع میشود. چرا؟ محیط استقرار یعنی (VM Instance) برای کد آنها با محیط توسعه یعنی (ویندوز) متفاوت است. او میبیند که هفتهها و ماهها بستهها و محیطها را تعمیر میکند تا مطمئن شود کدش میتواند در فضای استقرار قرار بگیرد. اینجاست که کانتینرسازی وارد میشود.
سناریوی دیگری برای توضیح اهمیت کانتینریسازی، همکاری تیمی برای پروژهها است. عضو تیم A یک میکروسرویس با یک بسته با استفاده از نسخه 4.0 ساخته است در حالی که عضو تیم B به طور ناخودآگاه این بسته نسخه 4.1 را نصب کرده است. اگر برخی از کدهای پایه به نسخه قبلی 4.0 متکی باشند، این میتواند در طول عیب یابی چالش برانگیز باشد. این میتواند تولید را در طول آزمایش کند کند و اشکال زدایی آن دشوار باشد.
کانتینرسازی فناوری و روشی برای بستهبندی، توزیع و اجرای برنامهها و وابستگیهای آنها در واحدهای مجزا و مستقل است که به عنوان کانتینر شناخته میشوند. این کانتینرها همه چیزهایی را که یک برنامه برای اجرا نیاز دارد، شامل کد، زمان اجرا، کتابخانهها و ابزارهای سیستم، کپسوله میکند و از سازگاری و تکرارپذیری در محیطهای مختلف اطمینان میدهد.
نمونههایی از کانتینرهای مدرن عبارتند از Docker، Podman، CRI-O و غیره.
کانتینر در مقابل ماشینهای مجازی
در حالی که کانتینرها و ماشینهای مجازی هر دو فناوریهایی هستند که برای جداسازی و استقرار برنامهها استفاده میشوند، اما در سطوح مختلف پشته فناوری کار میکنند و ویژگیهای متمایزی دارند.
اعتبار: Podman vs Docker لینک زیر
کانتینرها جداسازی سطح فرآیند را در حین به اشتراک گذاشتن سیستم عامل میزبان، منابع کارآمد در مصرف CPU و حافظه و در نتیجه سبک وزن در پیاده سازی ارائه میکنند، در حالی که یک ماشین مجازی یک جداسازی کامل از سیستم عامل میزبان را انجام میدهد و باید سیستم عامل و پیکربندی خود را بسازد، منابع کارآمد کمتری دارد. این نیاز به منابع جداگانهای دارد که هم در CPU و هم در حافظه ارائه میشود که منجر به سنگین بودن آن در پیاده سازی میشود
انتخاب Docker، Podman و CRI-O
Docker همچنان کانتینری محبوبی است که امروزه مورد استفاده قرار میگیرد، با این حال، اکنون تقاضا برای کانتینرهای دیگری مانند Podman و CRI-O افزایش یافته است. Podman و Docker هر دو از نظر عملکرد مشابه هستند (ابزارهای کانتینریسازی همه منظوره) اما تفاوتهایی در معماری دارند که طلوع جدیدی را در بازار کانتینرسازی ایجاد میکند.
در حالی که Docker از یک شبح مرکزی (dockerd) استفاده میکند که کانتینرها را مدیریت میکند و به مشتریان خود اجازه میدهد تا با دیمون برای انجام وظایف مربوط به کانتینر ارتباط برقرار کنند، Podman بدون دیمون مرکزی عمل میکند. هر دستور Podman به عنوان یک فرآیند جداگانه اجرا میشود که میتواند امنیت را افزایش داده و آن را برای عملیات کانتینر بدون ریشه مناسب کند. بنابراین، Podman بسیار مورد توجه توسعهدهندگان قرار گرفته است، بهویژه با مزایای بیشمارش مانند ارائه کانتینرهای بدون ریشه (که در Docker موجود نیست) و Podman Pod Concept که با Kubernetes همسو هستند.
CRI-O یک کانتینر با هدف تخصصی است که برای ادغام با زمانهای اجرا Kubernetes ساخته شده است. اگر یک داکر برای Kubernetes در نظر بگیرید، در درجه اول بهترین کار است، زیرا برای سازمانهایی که میخواهند خوشههای Kubernetes را اجرا کنند و برای مدیریت کانتینرها به Kubernetes متکی هستند، مناسب است. این با تمرکز قوی بر روی امنیت و مطابقت با استانداردهای Kubernetes طراحی شده است، با این حال، مانند Docker و Podman رابط کاربر پسندی ندارد.
به طور خلاصه، بیایید نحوه انتخاب بین Docker، Podman و CRI-O را بر اساس موارد استفاده و الزامات خاص بررسی کنیم:
-- اگر به یک ابزار کانتینری سازی همه منظوره با رابط کاربر پسند و اکوسیستم بزرگ نیاز دارید، از Docker استفاده کنید.
-- اگر میخواهید با Docker سازگاری داشته باشید، از Podman استفاده کنید و در عین حال بر امنیت، ظروف بدون ریشه و پشتیبانی از پادها تأکید کنید.
-- اگر خوشههای Kubernetes را اجرا میکنید و نیاز به زمان اجرای کانتینر اختصاصی دارید که به طور یکپارچه با Kubernetes ادغام شود، از CRI-O استفاده کنید.
کانتینر داکر (Docker Container) از تصویر داکر (Docker Image) ساخته میشود. اگر فرض کنید تصویر داکر یک دستور آشپزی باشد، کانتینر داکر یک ظرف آماده شده از آن دستور آشپزی است.
یک تصویر کانتینر (Container Image) نسخه سبک، مستقل و بسته قابل اجرا از بخشی از نرم افزار میباشد که شامل هر آن چیزی است که نیاز به اجرا دارد: کد، ابزار سیستم، کتابخانه سیستم و تنظیمات.
کانتینر (Container) نرم افزار را از فضای اطراف آن ایزوله میکند، برای مثال فضای بین توسعه (Development) و راه اندازی نهایی نرم افزار و کمک میکند تداخل بین تیمهای مختلف برای اجرای یک نرم افزار برروی یک زیرساخت مشترک کاهش یابد.
به طور کلی برای فهم تصویر داکر، ما میبایست آن را اجرا نماییم و هنگامیکه میخواهیم تصویر داکر را اجرا کنیم یک کانتینر داکر میسازیم.
بسته نرم افزاری در واحد استاندارد برای توسعه، نقل و انتقال و گسترش
یک کانتینر داکر (Docker Container) یک واحد استانداردسازی شده از نرم افزار است که بستههای کد و هر آن چه به آن نیاز دارد تا اپلیکیشن به سرعت و پایدار اجرا شود و از یک واحد پردازش به واحد دیگر منتقل گردد را در خود گنجانده است.
نمایه داکر (Docker Image) اساس یک کانتینر داکر را تشکیل میدهند که نیاز اولیه برای اجرا آن است و هنگامیکه در موتور داکر (Docker Engine) قرار میگیرند اجرا میشوند.
کانتینر داکر (Docker Container) برای اپلیکیشنها تحت ویندوز و لینوکس قابل استفاده هستند به طوریکه نرم افزارهای کانتینری همواره به یک شکل واحد و بدون وابستگی به زیرساخت اجرا میشوند.
کانتینرهای داکر که برروی موتور داکر اجرا میشوند خصوصیات زیر را دارا هستند:
استاندارد: داکر یک صنعت استاندارد برای ایجاد کانتینر میباشد، پس به صورت پرتابل قابل حمل و انتقال به هر کجا میباشند.
سبک و ساده: کانتینرهای داکر از کرنل سیستم عامل به صورت اشتراکی استفاده میکند پس نیازی به سیستم عامل برای هر اپلیکیشن وجود ندارد پس کارآمدی آنها بسیار بالا و هزینه سرور و نگهداری آنها کاهش مییابد.
ایمن: اپلیکیشنها بسیار ایمن تر در داخل کانتینرها هستند و داکر قویترین حالت ایزوله سازی را در این صنعت به کار گرفته است.
کانتینر(Container) یک واحد استاندارد نرم افزار است که کد و تمام وابستگیهای آن را بسته بندی میکند تا برنامه به سرعت و با اطمینان از یک محیط محاسباتی به محیط دیگر اجرا شود. در این مقاله به شما خواهیم گفت container یا کانتینر چیست و با مزایا، کاربردها و بسترهای پیادهسازی آن آشنا خواهیم شد.
کانتینرها نوعی مجازی سازی سیستم عامل هستند. یک ظرف واحد ممکن است برای اجرای هر چیزی از یک میکروسرویس کوچک یا فرآیند نرم افزاری گرفته تا یک برنامه بزرگتر استفاده شود.
در داخل یک کانتینر، تمامیفایلهای اجرایی، کدهای باینری، کتابخانهها و فایلهای پیکربندی لازم پس از خرید سرور وجود دارد. با این حال، در مقایسه با رویکردهای مجازی سازی سرور یا ماشین پس از خرید vps، کانتینرها حاوی تصاویر سیستم عامل نیستند.
این باعث میشود آنها سبکتر و قابل حملتر باشند و هزینههای سربار بسیار کمتری داشته باشند.
در استقرار برنامههای بزرگتر در خرید سرور اختصاصی، چندین کانتینر ممکن است به عنوان یک یا چند دسته کانتینر مستقر شوند. چنین خوشههایی ممکن است توسط یک ارکستراتور کانتینری مانند Kubernetes مدیریت شوند.
چرا به کانتینرها نیاز داریم؟
مشکل عدم اجرای صحیح برنامه هنگام انتقال از محیطی به محیط دیگر به اندازه خود توسعه نرم افزار است. چنین مشکلاتی معمولاً به دلیل تفاوت در پیکربندی زیربنای الزامات کتابخانه و سایر وابستگیها به وجود میآیند.
کانتینرها با ارائه یک زیرساخت سبک وزن و غیرقابل تغییر برای بسته بندی و استقرار برنامه، این مشکل را برطرف میکنند. یک برنامه یا سرویس، وابستگیهای آن و پیکربندی آن به عنوان یک تصویر ظرف با هم بسته بندی میشوند. برنامه کانتینری را میتوان به عنوان یک واحد آزمایش کرد و به عنوان نمونه تصویر کانتینرها در سیستم عامل میزبان مستقر شد.
به این ترتیب، کانتینرها توسعه دهندگان و متخصصان فناوری اطلاعات را قادر میسازند تا برنامههای کاربردی را در محیطها با تغییرات اندک یا بدون تغییر مستقر کنند.
مفهوم کانتینرها
مفهوم کانتینرها
همانطور که صنایع کشتیرانی از کانتینرهای فیزیکی برای جداسازی محمولههای مختلف استفاده میکنند – به عنوان مثال، برای حمل و نقل در کشتیها و قطارها، فناوریهای توسعه نرم افزار به طور فزایندهای از رویکردی به نام کانتینرسازی استفاده میکنند.
یک بسته نرمافزار استاندارد – معروف به کانتینر – کد برنامه را با فایلهای پیکربندی و کتابخانههای مربوطه و وابستگیهای مورد نیاز برای اجرای برنامه همراه میکند. این کار به توسعه دهندگان و متخصصان فناوری اطلاعات اجازه میدهد تا برنامهها را به طور یکپارچه در سراسر محیطها مستقر کنند.
۱.Builder
Container Builder فقط یک سازنده Docker نیست، بلکه یک اکوسیستم ترکیبی است که به شما این امکان را میدهد از هر مرحله ساخت که میخواهید استفاده کنید.
۲.Engine
موتورهای کانتینری میتوانند چندین نمونه مجزا را که به نام کانتینر شناخته میشوند، روی هسته سیستم عامل یکسان اجرا کنند. کانتینرها مجازی سازی را در سطح سیستم عامل انجام میدهند و محیطی قابل کنترل و قابل مدیریت را برای اجرای برنامهها و وابستگیها فراهم میکنند.
۳.Orchestration
ارکستراسیون کانتینر در مورد مدیریت چرخه حیات کانتینرها است، به ویژه در محیطهای بزرگ و پویا. تیمهای نرم افزاری از هماهنگ سازی کانتینر برای کنترل و خودکارسازی بسیاری از وظایف استفاده میکنند:
- تهیه و استقرار کانتینرها
- افزونگی و در دسترس بودن کانتینرها
- افزایش مقیاس یا حذف کانتینرها برای پخش یکنواخت بار برنامه در زیرساخت میزبان
- جابجایی کانتینرها از یک میزبان به میزبان دیگر در صورت کمبود منابع در یک میزبان یا در صورت فوت میزبان
- تخصیص منابع بین کانتینرها
- قرار گرفتن در معرض خارجی از خدمات در حال اجرا در یک ظرف با جهان خارج
- تعادل بار کشف سرویس بین کانتینرها
- نظارت بر سلامت کانتینرها و میزبان
- پیکربندی یک برنامه کاربردی در رابطه با کانتینرهایی که آن را اجرا میکنند
چه نوع کانتینرهای داکری روی Docker Engine کار میکنند؟
چه نوع کانتینرهای داکری روی Docker Engine کار میکنند؟
کانتینرها نرمافزار را از محیط خود جدا میکنند و اطمینان میدهند که علیرغم تفاوتهایی که برای مثال بین توسعه و مرحلهبندی وجود دارد، یکنواخت کار میکند. کانتینرهای Docker که روی Docker Engine کار میکنند:
استاندارد: داکر استاندارد صنعتی را برای کانتینرها ایجاد کرد، بنابراین آنها میتوانند در هر مکانی قابل حمل باشند
سبک وزن: کانتینرها هسته سیستم عامل دستگاه را به اشتراک میگذارند و بنابراین نیازی به سیستم عامل در هر برنامه ندارند، که باعث افزایش کارایی وب سرورها نظیر nginx (جهت اطلاعات بیشتر در مورد این که nginx چیست اینجا کلیک نمایید.)، IIS، آپاچی (جهت اطلاعات بیشتر در مورد این که آپاچی چیست اینجا کلیک نمایید.) و… و کاهش هزینههای سرور و صدور مجوز میشود. جهت اطلاعات بیشتر در مورد این که وب سرور چیست اینجا کلیک نمایید.
ایمن: برنامهها در کانتینرها ایمنتر هستند و Docker قویترین قابلیتهای جداسازی پیشفرض را در صنعت ارائه میکند.
جهت اطلاعات بیشتر در مورد این که داکر چیست اینجا کلیک نمایید.
کانتینرها بر روی چه بسترهایی پیاده سازی میشوند؟
کانتینرها بر روی چه بسترهایی پیاده سازی میشوند؟
کانتینرها روی انواع سیستم عاملها شامل موارد زیر قابل اجرا هستند.ر اما باید توجه داشت که اگرچه کانتینرها قابل حمل هستند، اما به سیستم عاملی که برای آن تعریف شدهاند محدود میشوند. به عنوان مثال، یک کانتینر برای لینوکس نمیتواند در ویندوز اجرا شود و بالعکس. جهت اطلاعات بیشتر در مورد این که لینوکس چیست اینجا کلیک نمایید.
۱.Linux
یک کانتینر لینوکس اعم از اوبونتو (جهت اطلاعات بیشتر در مورد این که اوبونتو چیست اینجا کلیک نمایید.) یا سنت او اس مجموعهای از 1 یا چند فرآیند است که از بقیه سیستم جدا شده اند. (جهت اطلاعات بیشتر در مورد این که Centos چیست اینجا کلیک نمایید.) تمام فایلهای لازم برای اجرای آنها از یک تصویر مجزا تهیه میشوند، به این معنی که کانتینرهای لینوکس در حین حرکت از توسعه، آزمایش، و در نهایت به تولید، قابل حمل و سازگار هستند. در صورت نیاز بههاست لینوکس اینجا کلیک نمایید.
۲.Windows
کانتینرها یک فناوری برای بسته بندی و اجرای برنامههای کاربردی ویندوز در محیطهای مختلف در محل و در فضای ابری هستند. کانتینرها یک محیط سبک وزن و ایزوله ارائه میدهند که توسعه، استقرار و مدیریت برنامهها را آسان تر میکند. در صورت نیاز بههاست ویندوز اینجا کلیک نمایید.
۳.Datacenter
مرکز داده کانتینری نوعی مرکز داده با عملکرد بهینه (POD) است که زیرساختهای برق، خنککننده و توزیع برق فناوری اطلاعات را برای ارائه انعطافپذیری که میتواند روی سقفها و غیره قرار گیرد، یکپارچه میکند.
۴.cloud
کانتینرها بستههایی از نرم افزار هستند که حاوی تمام عناصر لازم برای اجرا در هر محیطی هستند. به این ترتیب، کانتینرها سیستم عامل را مجازی میکنند و در هر مکانی از یک مرکز داده خصوصی گرفته تا ابر عمومییا حتی روی لپ تاپ شخصی یک توسعه دهنده اجرا میشوند.
خدمات کانتینری
به گفته آبردین، کانتینرها یک فناوری کلیدی برای کمک به تصمیم گیرندگان فناوری اطلاعات برای مقابله با بحرانیترین فشارهای خود هستند، از جمله:
- کاهش هزینههای عملیاتی که توسط 42 درصد از تصمیم گیرندگان ذکر شده است.
- افزایش درآمد، ذکر شده توسط 29٪.
- به حداکثر رساندن بازده سرمایهگذاریهای فناوری اطلاعات، با ذکر 18 درصد.
همچنین استراتژیهای کانتینریسازی باعث رشد زیرساختهای ترکیبی و چند ابری میشوند که میتوانند با اپلیکیشنهای کانتینری تکمیل و تکمیل شوند. آبردین خاطرنشان میکند، “سیستمها میتوانند به سرعت مقیاس شوند، و SLAها را میتوان به طور قابل اعتماد با برنامههای کانتینری که به سرعت مستقر میشوند، برآورده کرد.”
مزیتهای مهم کانتینرها
۷ مورد از مزیتهای مهم کانتینرها
کانتینرها روشی ساده برای ساخت، آزمایش، استقرار و استقرار مجدد برنامهها در محیطهای مختلف از لپتاپ محلی یک توسعهدهنده تا مرکز داده داخلی و حتی فضای ابری هستند. مزایای کانتینرها عبارتند از:
۱. تفکیک برنامهها
وقتی توسعهدهندگان برنامههای خود را در کانتینرها میسازند و بستهبندی میکنند و آنها را در اختیار فناوری اطلاعات قرار میدهند تا روی یک پلتفرم استاندارد اجرا شوند، این تلاش کلی برای استقرار برنامهها را کاهش میدهد و میتواند کل چرخه توسعه و آزمایش را ساده کند. همچنین همکاری و کارایی بین توسعه دهندگان و تیمهای عملیاتی را برای ارسال سریعتر برنامهها افزایش میدهد.
۲. قابلیت حمل
برنامههای در حال اجرا در کانتینرها میتوانند به راحتی در چندین سیستم عامل مختلف و پلت فرمهای سخت افزاری مستقر شوند.
۳. جداسازی برنامه
کانتینرها به برنامهها اجازه میدهند تا سریعتر استقرار، وصله یا مقیاسبندی شوند.
۴. سربار کمتر
کانتینرها به منابع سیستم کمتری نسبت به محیطهای ماشین مجازی و سرور مجازی اختصاصی سنتی یا سختافزاری نیاز دارند زیرا شامل تصاویر سیستم عامل نمیشوند.
۵. عملکرد منسجم تر
تیمهای DevOps میدانند که برنامههای کاربردی در کانتینرها بدون توجه به جایی که مستقر شدهاند، یکسان اجرا میشوند.
۶. بهرهوری بیشتر
از آنجایی که کانتینرها سربار معمول ماشینهای مجازی، از جمله نمونههای سیستم عامل جداگانه را ندارند، کانتینرهای بیشتری را میتوان در زیرساخت مشابه پشتیبانی کرد. ماهیت سبک کانتینرها به این معنی است که میتوان آنها را به سرعت راه اندازی و متوقف کرد و سناریوهای افزایش و کاهش مقیاس سریع را باز میکند.
۷. توسعه برنامه بهتر
کانتینرها از تلاشهای چابک و DevOps برای تسریع چرخههای توسعه، آزمایش و تولید پشتیبانی میکنند.
کاربردهای کانتینرها چه چیزی است؟
۱. توسعه چابک
کانتینرها در حال افزایش تعداد و تنوع سایتهایی هستند که فناوری اطلاعات را از جمله سایتهای ابری و داخلی مدیریت میکند.
شرکتها از فناوری کانتینر به عنوان یک جزء کلیدی در ارائه زیرساخت و استقلال سایت برای برنامهها استفاده میکنند.
۲. عملیات کارآمد
برخی از سازمانها از کانتینرها برای انتقال برنامههای کاربردی موجود به محیطهای مدرن تر استفاده میکنند. در حالی که این عمل برخی از مزایای اساسی مجازی سازی سیستم عامل را ارائه میدهد، اما مزایای کامل معماری برنامه کاربردی ماژولار و مبتنی بر کانتینر را ارائه نمیدهد.
۳. قابلیت حمل و اجرا
یک کانتینر سیستم عامل زیرین را مجازی سازی میکند و باعث میشود برنامه کانتینری متوجه شود که دارای سیستم عامل (شامل CPU، حافظه، ذخیره سازی فایل و اتصالات شبکه) است. از آنجا که تفاوتها در سیستمعامل و زیرساخت زیربنایی انتزاعی هستند، تا زمانی که تصویر پایه ثابت باشد، کانتینر میتواند در هر جایی مستقر شود و اجرا شود. برای توسعه دهندگان، این فوق العاده جذاب است.
۴. تغییر برنامههای کاربردی به معماری ابری مدرن
یکی از چالشهای تسریع در استفاده از کانتینر، انتخاب یک پلتفرم کانتینریسازی است که با اولویتهای تجاری خاص برای بیشترین کارایی هماهنگ باشد. این امر به دلیل این واقعیت پیچیده است که معماران و مدیران فناوری اطلاعات ممکن است انتخاب کنند که کانتینرها را در ابر عمومی، در یک مرکز داده موجود یا در یک محیط ابری ترکیبی مستقر کنند یا آنها را به صورت محلی میزبانی کنند.
۵. برنامههای کاربردی موجود برای کانتینرها
کانتینرها برای پشتیبانی از یک یا چند فرآیند مشابه، که اغلب در پسزمینه اجرا میشوند، مانند توابع ETL یا کارهای دستهای، مستقر میشوند.
۶. پشتیبانی بهتر از معماری میکروسرویسها
برنامههای کاربردی و میکروسرویسهای توزیع شده را میتوان با استفاده از بلوکهای سازنده کانتینر به راحتی جداسازی، گسترش و مقیاس بندی کرد.
۷. ارائه پشتیبانی DevOps برای یکپارچه سازی و استقرار مداوم (CI/CD)
فناوری کانتینر از ساخت، آزمایش و استقرار ساده از تصاویر کانتینر پشتیبانی میکند.
۸. استقرار آسان تر مشاغل و وظایف تکراری
انتخاب نوع استقرار تنها مانع برای استفاده سریع نیست. همچنین ممکن است به دلیل نیاز به یک چارچوب مدیریتی سازگار که شامل برنامههای معمولی و کانتینری برای کارایی و همچنین به دلیل نیاز به پشتیبانی از برنامههای موجود حتی در زمان مدرنسازی باشد، ممکن است استقرار به تعویق بیفتد.
مقایسه کانتینرها و ماشینهای مجازی
مقایسه کانتینرها و ماشینهای مجازی
گاهی اوقات مردم فناوری کانتینر را با ماشینهای مجازی (VM) یا فناوری مجازی سازی سرور اشتباه میگیرند. اگرچه برخی از شباهتهای اساسی وجود دارد، کانتینرها بسیار متفاوت از VMها هستند.
ماشینهای مجازی در یک محیط Hypervisor اجرا میشوند که در آن هر ماشین مجازی باید سیستم عامل مهمان خود را به همراه باینریها، کتابخانهها و فایلهای کاربردی مربوطه در خود داشته باشد. این مقدار زیادی از منابع و سربار سیستم را مصرف میکند، به خصوص زمانی که چندین VM روی یک سرور فیزیکی یکسان در حال اجرا هستند، هر کدام دارای سیستم عامل مهمان خاص خود هستند.
در مقابل، هر کانتینر سیستم عامل میزبان یا هسته سیستم یکسانی دارد و از نظر اندازه بسیار سبک تر است و اغلب فقط مگابایت است. این اغلب به این معنی است که یک کانتینر ممکن است فقط چند ثانیه طول بکشد تا شروع شود (در مقایسه با گیگابایت و دقیقه مورد نیاز برای یک ماشین مجازی معمولی).
جهت راهنمای خرید سرور مجازی اینجا کلیک نمایید.
کانتینر یک واحد استاندارد نرم افزار است که کد و تمام وابستگیهای آن را بسته بندی میکند تا برنامه به سرعت و با اطمینان از یک محیط محاسباتی به محیط دیگر اجرا شود.
یک تصویر کانتینر Docker یک بسته نرم افزاری سبک وزن، مستقل و قابل اجرا است که شامل همه چیزهایی است که برای اجرای یک برنامه لازم است: کد، زمان اجرا، ابزارهای سیستم، کتابخانههای سیستم و تنظیمات. تصاویر کانتینر در زمان اجرا به کانتینر تبدیل میشوند و در مورد کانتینرهای داکر – تصاویر زمانی که روی موتور داکر اجرا میشوند به کانتینر تبدیل میشوند.
نرم افزار کانتینری که هم برای برنامههای لینوکس و هم برای برنامههای مبتنی بر ویندوز موجود است، صرف نظر از زیرساخت، همیشه یکسان اجرا میشود. کانتینرها نرمافزار را از محیط خود جدا میکنند و اطمینان میدهند که علیرغم تفاوتهایی که برای مثال بین توسعه و مرحلهبندی وجود دارد، یکنواخت کار میکند.
راهاندازی Docker در سال 2013، انقلابی را در توسعه برنامههای کاربردی با دموکراتیک کردن کانتینرهای نرمافزاری آغاز کرد. داکر یک فناوری کانتینر لینوکس را توسعه داد (فناوری قابل حمل، انعطافپذیر و آسان برای استقرار.) libcontainer منبع باز Docker و با یک جامعه جهانی از مشارکت کنندگان برای توسعه بیشتر آن شریک شد.
در ژوئن 2015، داکر مشخصات تصویر کانتینر و کد زمان اجرا را که اکنون به عنوان runc شناخته میشود، به ابتکار کانتینر باز (OCI) اهدا کرد تا به ایجاد استانداردسازی با رشد و بلوغ اکوسیستم کانتینر کمک کند.
پس از این تکامل، Docker به پروژه کانتینر که داکر در سال 2017 به بنیاد محاسبات بومیابری (CNCF) اهدا کرد، ادامه میدهد.
کانتینر یک زمان اجرای کانتینر استاندارد صنعتی است که از runc استفاده میکند و با تاکید بر سادگی و استحکام ایجاد شده است. و قابل حمل بودن containerd زمان اجرای کانتینر هسته Docker Engine است.
Docker یک محیط اجرای محبوب است که برای ایجاد و ساختن نرم افزار در داخل کانتینرها استفاده میشود. از تصاویر Docker (copy-on-write snapshots) برای استقرار برنامهها یا نرمافزارهای کانتینری در محیطهای مختلف، از توسعه گرفته تا آزمایش و تولید، استفاده میکند. داکر بر اساس استانداردها و عملکردهای باز در اکثر محیطهای عملیاتی رایج، از جمله لینوکس، مایکروسافت ویندوز، و سایر زیرساختهای داخلی یا مبتنی بر ابر ساخته شده است.
ارکستراسیون برای تسریع استفاده از کانتینر بسیار مهم است و برای بسیاری از شرکتها، Kubernetes پلت فرم ارکستراسیون انتخابی است. در واقع، 96 درصد از سازمانها در نظرسنجی سال 2021 توسط بنیاد محاسبات بومیابری، استفاده یا ارزیابی Kubernetes را گزارش کردند.
برنامههای کاربردی ابری برای یک مدل عملیاتی مشترک در سراسر محیطها، از جمله عمومی، خصوصی و ترکیبی به کانتینرها متکی هستند. سربار کم و چگالی زیاد کانتینرها به بسیاری از آنها اجازه میدهد تا در داخل یک ماشین مجازی میزبانی شوند و آنها را برای ارائه برنامههای کاربردی ابری ایده آل میکند.
امنیت container
امنیت کانتینر بخش مهمیاز ارزیابی امنیت جامع است. این عمل محافظت از برنامههای کاربردی کانتینری در برابر خطرات احتمالی با استفاده از ترکیبی از ابزارها و سیاستهای امنیتی است.
استفاده از کانتینرها در چند سال گذشته به طور تصاعدی افزایش یافته است. در حالی که فناوریهای کانتینری برای دههها وجود داشتهاند، راهاندازی Docker در سال 2013 بود که آن را برای سازمانها عملیتر کرد تا یک مدل توسعه و عملیات اولین کانتینر را اتخاذ کنند.
همراه با این رشد، خطرات امنیتی نیز به همراه دارد. با میلیونها تصویر موجود برای انتخاب، ایمن کردن کانتینرها یک کار نختصصی است. لایههای امنیتی زیادی برای کانتینرها اعمال میشود، مانند:
- تصویر کانتینر و نرم افزار داخل
- تعامل بین کانتینر، سیستم عامل میزبان و سایر کانتینرها در میزبان
- سیستم عامل میزبان
- شبکههای کانتینری و مخازن ذخیره سازی
- محیط زمان اجرا، اغلب در خوشههای Kubernetes
جهت اطلاع از این که SSH چیست اینجا کلیک نمایید.
کلام آخر
در دنیای مهندسی نرم افزار، کانتینر یک محیط مجازی سازی شده است که محتویات آن یک برنامه کاربردی و تمام فایلهای پیکربندی، کتابخانهها، باینریها و وابستگیهای مورد نیاز برای اجرای آن برنامه است. این روش بستهبندی یک برنامه کاربردی همراه با کتابخانهها و وابستگیهای آن، تیمهای توسعه نرمافزار را قادر میسازد تا برنامههایی بسازند که حتی زمانی که بین رایانهها جابهجا میشوند، عملکرد یکسانی داشته باشند.
در صورت نیاز به راهنمایی و مشاوره بیشتر با متخصصین وب رمز تماس حاصل نمایید.
نکاتی در مورد کانتینرها همچون داکر و
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Add the Kubernetes repository
How To Install and Use Docker on Ubuntu 22.04 | DigitalOcean
Install Docker Portainer On Ubuntu 20 Servers
How to fix “docker-compose: command not found” – LinuxPip
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
نحوه نصب هیدفای
git clone https://github.com/hiddify/hiddify-config
cd hiddify-config
docker-compose up -d