پادمن یا داکر مسئله این است!!!

با معرفی داکر عصر جدیدی در مدیریت کانتینر ها و حتی مدیریت سرویس ها آغاز شد. در داکر یک دیمن مدیریت همه چیز را بر عهده دارد.

ولی سوال اینجاست آیا داکر تنها راه استفاده بهینه از کانتینر هاست؟ در این پست به پاسخ چند سوال میپردازیم. چرا از داکر استفاده کنیم؟ چرا از داکر استفاده نکنیم؟ و کی به سراغ جایگزین دیگر برویم؟

 

قبل از هر چیز به این میپردازیم که داکر چیه و چجوری کار میکنه.

داکر چیست؟

داکر یک مرحله برای ساخت کانتینر است که در آن ما می توانیم برنامه خود را با کتابخانه ها و شرایط داخل آن کانتینر سر هم کنیم. داکر تا حدی شبیه ماشین مجازی است.
اما …

بر خلاف ماشین های مجازی که سخت افزار را به صورت مجازی در اختیار VM میگذارند، در داکر کانتینرها در حال اجراهسته سیستم عامل میزبان را به اشتراک می گذارند.

ساختار داخلی داکر:

قسمت های اصلی داکر daemon و cli هستند.

Docker Daemon: یک فرایند ثابت در پس زمینه که به مدیریت/ایجاد ایمیج ها ،کانتینرها ، شبکه ها و حجم ذخیره سازی داکر کمک می کند.

Docker Engine REST API: ای پی آی مورد استفاده برنامه های کاربردی برای تعامل با داکر دیمن. می تواند توسط یک سرویس گیرنده HTTP قابل دسترسی باشد.

Docker CLI: سرویس گیرنده خط فرمان داکر برای تعامل با داکر دیمن که آن را با docker command میشناسیم.

برخی مشکلات داکر:

  • همانطور که همه می دانیم داکر با یک process واحد اجرا می شود و می تواند به یک نقطه شکست منجر شود (single point of failure).
  • تمام child processها متعلق به این process است.
  • در هر نقطه ای اگر Docker Daemon خطا بخورد ، همه child process ها به مشکل خواهند خورد و وارد حالت orphaned می شود.
  • آسیب پذیری های امنیتی
  • همه مراحل باید توسط یوزر root برای عملیات های Docker انجام شود.

اکنون می دانیم که داکر چگونه کار می کند ، بیایید به موضوع اصلی در مورد Podman برسیم و این که چگونه می توانیم بر اکثر مشکلات مربوط به کانتینرها غلبه کنیم.

Podman چیست؟

Podman یک سرویس بدون daemon کانتینری برای توسعه، مدیریت و اجرای کانتینرهای OCI در سیستم لینوکس شماست. کانتینرها را می توان به صورت root یا در حالت rootless اجرا کرد.

پادمن مستقیماً با ایمیج رجیستری، کانتینرها و ذخیره سازی ایمیج ها تعامل دارد.
همانطور که می دانیم Docker بر روی runC runtime container ساخته شده است و از daemon استفاده می کند، به جای استفاده از daemon در Podman ، مستقیماً از runC runtime container استفاده می کند.

نکاتی درباره پادمن:

برای استفاده از پادمن نیازی به استارت کردن سرویس و daemon نیست.

دستورات پادمن کاملا شبیه به داکر هستند به این صورت که میتوانید یکه alias تعریف کرده و از همان دستور داکر استفاده کنید. میتوانید از ایمیج های داکر در پادمن استفاده کنید و برعکس.

alias docker=podman

شروع کار با پادمن:

برای نصب پادمن میتوانید به این لینک مراجعه کنید. برای نصب در ubuntu:

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key" | sudo apt-key add -
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y install podman

دانلود ایمیج از رجیستری:

به صورت پیشفرض ۲ رجیستری در پادمن وجود دارد، docker.io و quay.io. برای دفعه اول میتوانید بین این ۲ انتخاب کنید.

podman pull nginx

اجرای کانتینر:

podman run -d -p 8080:80 nginx

مشاهده کانتینر های در حال اجرا:

podman ps

خلاصه

دستورات پادمن کاملا مشابه داکر است و تفاوتی ندارد. تفاوت بین این دو در نحوه اجرای کانتینر هاست. برای اجرای کانتینر های پادمن نیاز به دسترسی روت نیست. هر چند میتوان کانتینر را با root نیز اجرا نمود.

اشتراک گذاری

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *