ابزار Podman در ابتدا توسط مهندسان Red Hat با همکاری جامعه متن باز توسعه یافته است. Podman یک موتور کانتینر بدون Daemon (پروسه اجرا شده در پس زمینه) برای توسعه، مدیریت و اجرای کانتینرهای OCI روی سیستم های لینوکس می باشد. کانتینرها می توانند با دسترسی روت یا در حالت بدون روت (rootless) اجرا شوند.
Podman در واقع یک ابزار مدیریت کانتینر (container) است که به کاربران امکان می دهد کانتینرها و ایمیج آنها را روی سیستم های لینوکس مدیریت کنند.
همانند Docker، پادمن نیز به کاربران اجازه می دهد کانتینرها را اجرا، ایجاد و مدیریت نمایند. با این تفاوت که ابزار Podman بدون نیاز به یک پروسه جداگانه (daemon) کار می کند و این ویژگی آن را امن تر و سبکتر می سازد.
پادمن از همان ایمیج ها و مفهوم "پاد" (Pod) استفاده می کند. به همین دلیل، افرادی که تجربه کار با Docker را دارند، سریعتر با آن ارتباط میگیرند. علاوه بر این، Podman از سازماندهی کانتینرها به سبک Kubernetes پشتیبانی می کند. بنابراین، podman گزینهای انعطاف پذیر و کاربردی برای استفاده در محیط های مختلف به شمار می آید.

تصویر(1)
ابزار Podman چگونه کار می کند؟
پادمن همانند سایر موتورهای رایج کانتینر مانند Docker، CRI-O و containerd عمل می کند. این ابزار برای تعامل با سیستم عامل از یک Container Runtime تحت استاندارد OCI بهره می برد.
استاندارد OCI توسط Open Container Initiative تعریف شده است. به همین دلیل، کانتینرهایی که ابزار Podman اجرا می کند، از نظر ساختار و رفتار تقریبا تفاوتی با کانتینرهای ایجاد شده توسط سایر موتورهای کانتینری ندارند.
کانتینرهای تحت مدیریت podman می توانند با دسترسی روت و همچنین توسط کاربران عادی (Rootless) اجرا شوند. ابزار Podman کل اکوسیستم کانتینر شامل پادها، کانتینرها، ایمیجها و والیومها را از طریق کتابخانه libpod مدیریت می کند. این ابزار امکانات کاملی برای کار با ایمیج های تحت استاندارد OCI از جمله دریافت (pull)، برچسب گذاری (tag)، ساخت (build) و مدیریت آنها را فراهم می سازد.
پاد مجموعه ای از چند container است که namespace، پورت و شبکه مشترک دارند و کانتینرهای داخل آن می توانند با یکدیگر ارتباط مستقیم داشته باشند.
هر Pod شامل یک کانتینر زیرساختی (Infrastructure Container یا INFRA) است که مسئول نگهداری namespace پاد بوده و امکان اضافه شدن سایر کانتینرها به pod را فراهم میکند. تمامی تنظیمات مرتبط با اتصال پورتها، محدودیتهای منابع (cgroup-parent) و namespace های کرنل به این کانتینر زیرساختی اختصاص داده میشود.
هر کانتینر درون پاد دارای یک برنامه نظارتی (monitoring program) است که اجرای پروسه container را پایش میکند. در صورت توقف آن، کد خروج (Exit Code) را ثبت می نماید.
همچنین این برنامه رابط TTY کانتینر را فعال نگه می دارد. به واسطه این قابلیت، کانتینرها می توانند در حالت detach اجرا شوند؛ به طوری که حتی پس از خروج Podman نیز کار خود را ادامه می دهند و امکان اتصال مجدد به TTY در آینده فراهم است.
ابزار Podman چه تفاوتی با Docker دارد؟ مقایسه Podman و Docker
Podman یک ابزار مدیریت کانتینر برای سیستم عاملهای لینوکس است. این ابزار به کاربران اجازه می دهد کانتینرها و ایمیج ها را ایجاد، اجرا، مدیریت و مستقر کنند. یکی از تفاوت های کلیدی Podman و Docker، نحوه مدیریت محیط اجرای کانتینرها است.

تصویر(2)
تفاوت های اصلی Podman و Docker:
-
Daemonless: برخلاف Docker، پادمن نیازی به یک پروسه مرکزی طولانی مدت (مانند Docker daemon) برای مدیریت کانتینرها ندارد. هر دستور Podman به صورت یک پروسه مستقل اجرا می شود که این موضوع مدیریت کانتینرها را امن تر می کند.
-
Rootless Containers: امکان اجرای کانتینرها توسط کاربران معمولی بدون نیاز به دسترسی روت را فراهم می کند. این قابلیت امنیت را افزایش داده و خطرات ناشی از اجرای کانتینرها با دسترسی روت را کاهش می دهد.
-
یکپارچگی با Kubernetes: پادمن برای سازگاری با Kubernetes طراحی شده و از مدیریت کانتینرها بر اساس پادها (pod-based orchestration) پشتیبانی می کند. به این ترتیب، مدیریت و کار با محیط های Kubernetes آسان تر و کارآمدتر می شود.
-
تفکیک Namespace: پادمن namespace هر کانتینر را به صورت جداگانه مدیریت می کند. این کار موجب کنترل دقیق تر روی پروسه و منابع کانتینرها نسبت به Docker می شود.
شباهت های اصلی ابزار Podman و Docker:
-
سازگاری: Podman با ایمیج کانتینر و فایلهای Docker سازگار است و این ویژگی مهاجرت کاربران از Docker به Podman را تسهیل می کند.
-
شبکه و ذخیره سازی: ابزار Podman مانند Docker از پلاگین های شبکه و سیستم های ذخیره سازی مختلف پشتیبانی می کند و امکان تنظیم محیط کانتینرها بر اساس نیاز کاربر را فراهم می سازد.
با مقایسه Podman و Docker می توان دریافت که پادمن یک راهکار جایگزین برای مدیریت کانتینرها است و امنیت، سازگاری و انعطاف پذیری را در اولویت قرار می دهد، به ویژه در محیط هایی که اجرای کانتینرها بدون دسترسی روت اهمیت دارد.
Podman Desktop چیست؟

تصویر(3)
Podman Desktop یک ابزار گرافیکی متنباز برای مدیریت کانتینرها و محیطهای توسعه کانتینری است. این برنامه روی ویندوز، مک و لینوکس اجرا میشود و به توسعهدهندگان امکان میدهد کانتینرها، ایمیجها و پادها را بدون نیاز به خط فرمان (Command Line) مدیریت کنند. Podman Desktop از پادمن و سایر ابزارهای مبتنی بر OCI پشتیبانی میکند و قابلیت اتصال به Kubernetes را نیز دارد. این ابزار تجربهای سادهتر و گرافیکیتر برای کار با کانتینرها فراهم میکند.
برخی از سوالات متداول در مورد ابزار Podman
در ادامه برخی از سوالاتی که ممکن است درباره پادمن ایجاد شود، ذکر شدهاند:
- آیا می توان از Podman برای اجرای کانتینرهای Docker استفاده کرد؟
به دلیل استانداردهای باز و سازگاری با OCI، می توان از Podman و Docker در محیط های مشابه استفاده کرد. همچنین این امکان وجود دارد که یک کانتینر را به وسیله Podman یا Docker ایجاد و سپس با ابزارهای موجود آن را مدیریت یا تغییر داد.
- آیا Podman با Kubernetes سازگار است؟
ابزار Podman به طور کامل با Kubernetes سازگار است و می توان از آن برای مدیریت کانتینرها و پادها در کوبرنتیز استفاده کرد.
- آیا می توان از Podman برای انتقال کانتینرها به OpenShift استفاده کرد؟
Podman که توسط رد هت (Red Hat) توسعه یافته، به طور کامل با اکوسیستم OpenShift سازگار است. با توجه به اینکه OpenShift یک پلتفرم ارکستراسیون مبتنی بر کوبرنتیز می باشد و Podman نیز استانداردهای OCI و کوبرنتیز را رعایت می کند؛ شما می توانید به راحتی ایمیج های خود را در پادمن بسازید و آنها را در کلاستر های OpenShift مستقر (Deploy) نمایید.
- چرا Podman باید مانیتور شود؟
کانتینرها و برنامه هایی که با Podman Container Engine اجرا می شوند باید از نظر سرعت و پایداری در سطح بالایی باشند. در محیط های مدرن فناوری اطلاعات، دسترسی پیوسته به سرویس ها اهمیت زیادی دارد و حتی کوچکترین افت عملکرد در Podman می تواند پیامدهای قابل توجهی ایجاد کند.
برای تضمین در دسترس بودن 24/7 و حفظ عملکرد مطلوب، مدیران سیستم باید وضعیت و کارایی Podman و اجزای مرتبط با آن را به دقت زیر نظر داشته باشند. همچنین لازم است مشکلات را به سرعت شناسایی کرده و پیش از آنکه سرویس های وابسته یا کاربران نهایی تحت تاثیر قرار گیرند، آنها را برطرف سازند.
جمع بندی
Podman یک ابزار متن باز و بدون daemon برای مدیریت کانتینر در لینوکس است که امکان اجرای کانتینرها بدون دسترسی روت را فراهم می سازد. این ابزار با Docker سازگار بوده و به طور کامل از Kubernetes و OpenShift پشتیبانی می کند. انتقال پروژه ها به Podman با دستورات و ایمیج های Docker بسیار ساده است و امنیت و پایداری بیشتری را در محیط های عملیاتی فراهم می کند.