Podman یک ستاره در حال ظهور در یک منظره کانتینری جدید است که ناگهان بازیکنان بسیار بیشتری دارد. یاد بگیرید Podman چیست و چگونه با Docker برای سازگاری Kubernetes و موارد دیگر مقایسه می شود.
- پادمن و کوبرنتس
- پادمن در مقابل داکر
- آیا Podman جایگزین Docker خواهد شد؟
- از کدام موتور کانتینر باید استفاده کنید؟
پادمن یک موتور کانتینر است—ابزاری برای توسعه، مدیریت و اجرای کانتینرها و تصاویر کانتینر. Containers بستههای نرمافزاری استاندارد و مستقلی هستند که تمام عناصر لازم برای اجرا در هر مکانی را بدون نیاز به سفارشیسازی، از جمله کد برنامه و کتابخانههای پشتیبانی را در خود جای میدهند. برنامههای کاربردی مبتنی بر کانتینر تحولی در توسعه نرمافزار در دهه گذشته ایجاد کردهاند و سیستمهای توزیعشده و مبتنی بر ابر را برای استقرار و نگهداری آسان کردهاند.
پادمن پروژه ای از Red Hat است که منبع باز و رایگان برای دانلود است. این یک تازه وارد به صحنه کانتینرسازی است، با نسخه ۱.۰ که در سال ۲۰۱۹ منتشر شد. Podman از آن زمان به بعد پیشرفت های بزرگی داشته است و ظهور آن با زوال تدریجی Docker ترکیب شده است، پروژه ای که از بسیاری جهات دنیای کانتینرها را همانطور که امروزه می شناسیم ایجاد کرد.
پادمن و کوبرنتس
اگر حتی اندکی با توسعه مبتنی بر کانتینر آشنا هستید، نام Kubernetes را میشناسید. با پیچیده تر شدن برنامه های کاربردی کانتینری، توسعه دهندگان به ابزارهایی نیاز داشتند که بتوانند کانتینرهایی را که در حین اجرا بر روی ماشین های مجازی مختلف یا حتی در ماشین های فیزیکی مختلف با یکدیگر تعامل دارند، هماهنگ کنند. چنین ابزاری سکوی ارکستراسیون کانتینری نامیده میشود و Kubernetes با اختلاف برجستهترین نمونه است. Kubernetes میتواند با هر محفظهای کار کند که با مشخصات تصویر Open Container Initiative (OCI) مطابقت داشته باشد، کاری که کانتینرهای Podman انجام میدهند.
یکی از ویژگی های مهم Kubernetes مفهوم pod است، یک گروه بندی زودگذر از یک یا چند کانتینر که کوچکترین واحد محاسباتی است که Kubernetes می تواند مدیریت کند. Podman نیز همانطور که از نام آن پیداست بر روی ایده غلاف متمرکز شده است. یک غلاف Podman همچنین شامل یک یا چند ظرف است که با هم در یک فضای نام، شبکه و زمینه امنیتی واحد گروه بندی شده اند. این شباهت Podman و Kubernetes را به یک تناسب طبیعی تبدیل می کند و از همان ابتدا یکی از اهداف Red Hat این بود که از کاربران Podman میخواهد کانتینرها را با Kubernetes هماهنگ کنند.
پادمن در مقابل داکر
نام بزرگ دیگری از دنیای کانتینرها که تقریباً مطمئناً شنیده اید Docker است. Docker اولین موتور کانتینری نبود، اما از بسیاری جهات به تعریف کانتینرسازی پرداخته است. بیشتر نحوه عملکرد داکر استاندارد دفاکتو برای توسعه مبتنی بر کانتینر است – به اندازهای که بسیاری از مردم از “Docker” به عنوان مخفف کانتینرها استفاده میکنند.
در حالی که Docker و Podman فضای مشابهی را در اکوسیستم کانتینری اشغال میکنند، آنها یکسان نیستند، و فلسفهها و رویکردهای متفاوتی در مورد نحوه عملکردشان دارند. به عنوان مثال، داکر یک پلتفرم همه کاره با ابزارهایی برای کارهای خاص است، در حالی که Podman برای اهداف خاصی با پروژه های دیگر همکاری می کند – به عنوان مثال، به Buildah برای ساخت تصاویر کانتینر.
تفاوتهای معماری نیز وجود دارد: بهعنوان مثال، داکر مفهومی بومی از pods ندارد. تفاوت مهم دیگر این است که داکر برای ایجاد تصاویر و اجرای کانتینرها به یک برنامه دیمون پسزمینه دائماً در حال اجرا متکی است، در حالی که Podman کانتینرها و پادها را به عنوان پردازشهای فرزند جداگانه راهاندازی میکند. این جنبه از طراحی Docker پیامدهای مهمی برای امنیت دارد که به زودی در مورد آن صحبت خواهیم کرد.
دستورات Docker در Podman
بر اساس طراحی و ضرورت، Podman و Docker به طور کلی با هم سازگار هستند. بخشی از این سازگاری را می توان به پایبندی به استانداردهای باز نسبت داد. از آنجا که هر دو موتور با کانتینرهایی کار می کنند که با استاندارد OCI مطابقت دارند، می توانید یک کانتینر با Docker ایجاد کنید و آن را در Podman تغییر دهید یا برعکس، سپس هر یک از کانتینرها را در Kubernetes مستقر کنید.
وقتی Podman در سال ۲۰۱۹ عرضه شد، Docker آنقدر مسلط بود که رابط خط فرمان آن به بخشی از روال برنامهنویسی و حافظه عضلانی بسیاری از توسعهدهندگان تبدیل شده بود. برای اینکه یک حرکت بالقوه به Podman بدون درز انجام شود، سازندگان Podman اطمینان حاصل کردند که دستورات و نحو آن تا حد امکان منعکس کننده Docker است. آنها تا آنجا پیش رفتند که امکان تنظیم نام مستعار را فراهم کردند که re دستورات Docker را به Podman هدایت می کند.
امنیت بهتر با ظروف بدون ریشه
با توجه به اینکه Podman و Docker از بسیاری جهات به طور مشابه کار می کنند، چرا یکی را بر دیگری انتخاب می کنید؟ خوب، یک دلیل مهم امنیت است. به یاد دارید که چگونه داکر برای انجام بسیاری از کارهای جاری خود به دیمون متکی است؟ این دیمون بهعنوان ریشه اجرا میشود، که آن را به یک نقطه ورود بالقوه برای مهاجمان تبدیل میکند. این یک مانع غیرقابل عبور برای محاسبات ایمن نیست، اما به این معنی است که شما باید کمی فکر کنید مسائل امنیتی Docker ناوبری.
در برخی موقعیتها، میخواهید یک کانتینر با امتیازات ریشه در دستگاه میزبان خود اجرا کنید، و Podman به شما این امکان را میدهد. اما اگر ترجیح می دهید کانتینرهای خود را به طور ایمن به فضای کاربر محدود کنید، می توانید این کار را نیز با اجرای چیزی که ظرف بدون ریشه نامیده می شود انجام دهید. یک کانتینر بدون ریشه، امتیاز بیشتری نسبت به کاربری که آن را راه اندازی کرده است، ندارد. در داخل کانتینر، آن کاربر دارای حقوق ریشه است. همچنین میتوانید از پرچمهای خط فرمان برای اضافه کردن امتیازات استفاده کنید. به ظروف خود به صورت دانه ای.
در مورد عملکرد چطور؟
یکی از زمینههایی که Docker روی Podman روی میدهد، حداقل به گفته برخی، عملکرد است. اگرچه اطلاعات دقیق کمی در مورد این موضوع وجود دارد، یافتن توسعه دهندگان ناامید در اخبار هکر کار سختی نیست. , سرریز پشته و Reddit از عملکرد Podman شکایت دارند، مخصوصاً وقتی که بدون ریشه اجرا می شود. برخی از دانشجویان دانشگاه سوئد مجموعه معیاری را بر روی چندین پلتفرم کانتینری مختلف اجرا کردند و پیدا شدند Podman فاقد است، اگرچه مسلماً این نسخه قدیمیتر از Podman قبل از ۱.۰ بود. در حالی که اطلاعات فنی زیادی در مورد این موضوع وجود ندارد، به طور حکایتی، Podman برای عملکرد آن مورد تشویق قرار می گیرد.
آیا Podman جایگزین Docker خواهد شد؟
از بحث تا اینجای کار، ممکن است به نظر نرسد که تغییر فضای خوبی برای جایگزینی Docker با Podman در حال انجام است. اما یک تغییر بزرگ در راه است که Docker را از یکی از جایگاههای قدیمی خود دور میکند: خود Kubernetes.
Kubernetes و Docker برای سالها غولهای دوقلوی دنیای کانتینر بودهاند. اما همزیستی آنها همیشه تا حدی ناخوشایند بود. ظهور Kubernetes پس از آن رخ داد که Docker به خوبی در جایگاه خود تثبیت شد – در واقع، می توان گفت که Kubernetes تا حدی محبوب شد زیرا Docker در مدیریت همه کانتینرهایی که نیاز به هماهنگی در یک برنامه بزرگ و توزیع شده داشتند، به خوبی عمل نمی کرد. .
Docker (شرکت) در سال ۲۰۱۵ پلت فرم ارکستراسیون کانتینری خود را با نام Swarm توسعه داد که برای اجرای نقاط قوت داکر طراحی شده بود. Swarm با هیاهوی بسیار راه اندازی شد، اما هرگز کاملاً به Kubernetes نرسید. در حالی که Swarm هنوز طرفدارانی دارد، Kubernetes به استاندارد de facto برای ارکستراسیون کانتینر تبدیل شده است، همانطور که Docker به استاندارد de facto برای سایر جنبههای اکوسیستم کانتینر تبدیل شد.
علاوه بر این، Docker هرگز با Kubernetes از نظر زمان اجرای کانتینر، جزء سطح پایین موتور کانتینر که در کنار سایر وظایف، با سیستم عامل اصلی (OS) کار میکند، کاملاً خوب عمل نکرد. هسته و تصاویر ظرف جداگانه را نصب می کند. Docker و Kubernetes هر دو با مشخصات تصویر OCI مطابقت دارند، که Kubernetes از آن برای هماهنگ کردن تصاویر ساخته شده روی کانتینرها استفاده می کند. اما Kubernetes همچنین به زمانهای اجرا کانتینر سازگار با یک API پلاگین استاندارد به نام Container Runtime Interface (CRI)، که Docker هرگز به پیاده سازی آن دست نیافته است.
برای مدت طولانی، محبوبیت Docker، Kubernetes را مجبور کرد از Dockershim استفاده کند. ، یک لایه سازگار با CRI که واسطه ای بین Kubernetes و Daemon Docker بود. با این حال، این همیشه چیزی شبیه به یک هک بود، و اوایل امسال، Kubernetes جلو شد پشتیبانی از Dockershim. (در مقابل، Podman از CRI-O سازگار با زمان اجرا از Cloud Native Computing Foundation استفاده می کند.)
این بخشی از یک داستان بزرگتر در مورد تلاش داکر و شکست آن برای تبدیل شدن به یک شرکت سازمانی است. به طور خلاصه، داکر هرگز نتوانست به طور کامل از Kubernetes جدا شود. در همین حال، Kubernetes دیگر نیازی به Docker ندارد.
مشخص نیست که Podman جایگزین Docker شود یا خیر، اما قطعاً یکی از مدعیان خواهد بود. این کمک می کند که Podman یک محصول شاخص نیست که به دنبال کسب درآمد باشد، بلکه یک فناوری منبع باز واحد ارائه شده از یک شرکت بسیار بزرگتر است. میتوانیم انتظار داشته باشیم که Podman و Kubernetes برای مدتی در هم تنیده شوند.
از کدام موتور کانتینر باید استفاده کنید؟
امیدواریم که این بحث به شما درک عواملی را بدهد که به شما در انتخاب بین این دو موتور کانتینری کمک می کند. Podman مبتنی بر معماری ایمن تر است، در حالی که Docker تاریخچه عمیق تری دارد. Podman بومی Kubernetes است، در حالی که Docker با Docker Swarm نیز کار می کند. Docker شامل تمام عملکردهایی است که برای بسیاری از کارهای مرتبط با کانتینر نیاز دارید. Podman ماژولار است و به شما امکان می دهد ابزارهای مختلف را برای اهداف مختلف آزمایش کنید.
با این اوصاف، سوال “پادمن در برابر داکر” تا حدودی یک انتخاب نادرست است. هر دو پلتفرم تصاویری را ایجاد میکنند که با مشخصات OCI مطابقت دارند و هر دو توسط بسیاری از دستورات یکسان هدایت میشوند، بنابراین شما میتوانید یکپارچه بین این دو حرکت کنید. به عنوان مثال، ممکن است بخواهید از Docker برای توسعه محلی استفاده کنید، سپس از Podman برای استقرار کانتینرها استفاده کنید. شما در داخل Kubernetes ساخته اید.
یکی از ویژگیهایی که Docker را متمایز میکند این است که با پشتیبانی پولی همراه است. اما حتی این یک جنبه دیگر دارد: همانطور که Docker (شرکت) تلاش می کند تا از پیشنهادات پرچمدار خود کسب درآمد کند، پرداخت هزینه برای محیط توسعه Docker Desktop. از سوی دیگر، کلاه قرمزی، به نظر میرسد فعلاً از آزاد گذاشتن Podman (مانند آبجو) راضی است.
ژاکلین پریماورا یک نویسنده و ویراستار فنی در لس آنجلس است.
پست های مرتبط
پودمان چیست؟ موتور کانتینر جایگزین داکر می شود
پودمان چیست؟ موتور کانتینر جایگزین داکر می شود
پودمان چیست؟ موتور کانتینر جایگزین داکر می شود