podman-system-migrate(1) General Commands Manual podman-system-migrate(1)

podman-system-migrate - مهاجرت کانتینرهای موجود به یک نسخه جدید پودمن

podman system migrate [گزینه‌ها]

دستور podman system migrate کانتینرها را به جدیدترین نسخه پودمن مهاجرت می‌دهد.

دستور podman system migrate در صورت نیاز به هرگونه تغییر، مسئولیت مهاجرت کانتینرهای موجود به آخرین نسخه پودمن را بر عهده می‌گیرد.

پودمن بدون ریشه (Rootless Podman) از یک فرآیند مکث (pause process) برای زنده نگه داشتن فضاهای نام بدون امتیاز (unprivileged namespaces) استفاده می‌کند. این سازوکار از اعمال هرگونه تغییر در فایل‌های /etc/subuid و /etc/subgid روی کانتینرهای بدون ریشه در زمان فعال بودن فرآیند مکث جلوگیری می‌نماید.

برای اعمال این تغییرات، ابتدا باید تمام کانتینرهای در حال اجرای مرتبط با کاربر متوقف شده و فرآیند مکث نیز متوقف و فایل pid آن حذف شود. به جای انجام دستی این مراحل، می‌توان از دستور podman system migrate برای متوقف کردن هم‌زمان کانتینرهای در حال اجرا و فرآیند مکث استفاده کرد. پس از آن، فایل‌های /etc/subuid و /etc/subgid را می‌توان ویرایش کرد یا با usermod تغییر داد تا فضای نام کاربری با نگاشت‌های پیکربندی‌شده جدید بازسازی شود.

مهاجرت از پایگاه‌داده قدیمی BoltDB به SQLite. پشتیبانی از BoltDB در پودمن ۶٫۰ حذف شده است و پایگاه‌های داده موجود BoltDB باید برای ادامه استفاده از کانتینرها، پادها و حجم‌های ذخیره‌شده در آن‌ها مهاجرت داده شوند. این عمل به صورت خودکار هنگام راه‌اندازی مجدد سیستم (reboot) نیز انجام می‌شود. مهاجرت در جریان راه‌اندازی مجدد سیستم عموماً ترجیح داده می‌شود زیرا احتمال بروز شرایط رقابتی (race conditions) ناشی از اجرای هم‌زمان سایر فرآیندهای پودمن کمتر است. در صورتی که مهاجرت ضروری باشد، اجرای پودمن با یک خطای توضیحی با این مضمون که باید از این دستور استفاده شود یا سیستم راه‌اندازی مجدد گردد، با شکست مواجه می‌شود. برای اطمینان از تکمیل فرآیند مهاجرت، تمامی دستورات دیگر پودمن باید قبل از مهاجرت پایگاه‌داده متوقف شوند. به ویژه، سرویس‌های فعال‌شده توسط systemd مانند podman system service و Quadletها باید پیش از مهاجرت به صورت دستی متوقف شوند. پایگاه‌داده قدیمی حذف نخواهد شد، بنابراین حتی در صورت بروز خطا هیچ داده‌ای از دست نخواهد رفت.

تنظیم یک زمان اجرای جدید OCI (OCI runtime) برای تمامی کانتینرها. این گزینه می‌تواند پس از ارتقای سیستم که زمان اجرای پیش‌فرض OCI را تغییر می‌دهد، برای انتقال تمامی کانتینرها به زمان اجرای جدید به کار رود. هیچ تضمینی وجود ندارد که کانتینرها تحت زمان اجرای جدید به کار خود ادامه دهند، زیرا برخی از زمان‌های اجرا از گزینه‌ها و پیکربندی‌های متفاوتی پشتیبانی می‌کنند.

فراخوانی عادی

### خروجی خاصی از این دستور انتظار نمی‌رود.
$ podman system migrate

مهاجرت به یک زمان اجرای جدید OCI (برای مثال، از crun به runc)

### ساخت کانتینر با استفاده از زمان اجرای پیش‌فرض جاری (برای مثال crun)
$ podman create --name test-alpine alpine
### بررسی زمان اجرای فعلی
$ podman container inspect test-alpine | grep OCIRuntime
          "OCIRuntime": "crun",
### مهاجرت تمام کانتینرها جهت استفاده از زمان اجرای جدید (برای مثال runc)
$ podman system migrate --new-runtime runc
### اطمینان از اینکه کانتینر اکنون از زمان اجرای جدید استفاده می‌کند
$ podman container inspect test-alpine | grep OCIRuntime
          "OCIRuntime": "runc",

podman(1), podman-system(1), usermod(8)

آوریل ۲۰۱۹، در ابتدا توسط Giuseppe Scrivano (gscrivan at redhat dot com) گردآوری شد