podman-container-restore(1) General Commands Manual podman-container-restore(1)

podman-container-restore - بازیابی یک یا چند کانتینر از یک نقطه بررسی

podman container restore [options] name [...]

دستور podman container restore یک کانتینر را از یک نقطه بررسی (checkpoint) کانتینر یا ایمیج نقطه بررسی بازیابی می‌کند. از شناسه‌های کانتینر، شناسه‌های ایمیج یا نام‌ها به عنوان ورودی استفاده می‌شود.

بازیابی تمام کانتینرهای دارای نقطه بررسی.
مقدار پیش‌فرض false است.
مهم: این گزینه به نام یا شناسه کانتینر به عنوان آرگومان ورودی نیاز ندارد.

بازیابی یک کانتینر به همراه قفل‌های فایل. این گزینه برای بازیابی قفل‌های فایل از یک ایمیج نقطه بررسی الزامی است. اگر ایمیج نقطه بررسی حاوی قفل‌های فایل نباشد، این گزینه نادیده گرفته می‌شود. پیش‌فرض بازیابی نکردن قفل‌های فایل است.
مقدار پیش‌فرض false است.

اگر یک کانتینر از یک فایل tar.gz نقطه بررسی بازیابی شود، ممکن است حاوی تمام تغییرات سیستم‌فایل ریشه نیز باشد. با استفاده از --ignore-rootfs می‌توان اعمال این تغییرات سیستم‌فایل ریشه را روی کانتینر بازیابی‌شده صراحتاً غیرفعال کرد.
مقدار پیش‌فرض false است.
مهم: این گزینه تنها در ترکیب با --import, -i در دسترس است.

اگر کانتینر با --ip راه‌اندازی شده باشد، کانتینر بازیابی‌شده نیز تلاش می‌کند از همان نشانی IP استفاده کند و در صورتی که آن نشانی IP از قبل در حال استفاده باشد، بازیابی با شکست مواجه می‌شود. این حالت می‌تواند زمانی رخ دهد که یک کانتینر چندین بار از یک نقطه بررسی برون‌بری‌شده با --name, -n بازیابی شود.

استفاده از --ignore-static-ip به پودمن می‌گوید که اگر نشانی IP در زمان ایجاد کانتینر با --ip پیکربندی شده بود، آن را نادیده بگیرد.

مقدار پیش‌فرض false است.

اگر کانتینر با --mac-address راه‌اندازی شده باشد، کانتینر بازیابی‌شده نیز تلاش می‌کند از همان نشانی MAC استفاده کند و در صورتی که آن نشانی MAC از قبل در حال استفاده باشد، بازیابی ناموفق خواهد بود. این حالت زمانی ممکن است رخ دهد که یک کانتینر چندین بار از یک نقطه بررسی برون‌بری‌شده با --name, -n بازیابی شود.

استفاده از --ignore-static-mac به پودمن می‌گوید که اگر نشانی MAC در زمان ایجاد کانتینر با --mac-address پیکربندی شده بود، آن را نادیده بگیرد.

مقدار پیش‌فرض false است.

این گزینه باید در ترکیب با گزینه --import, -i استفاده شود. هنگام بازیابی کانتینرها از یک فایل tar.gz نقطه بررسی با این گزینه، محتوای حجم‌های مرتبط بازیابی نمی‌شود.
مقدار پیش‌فرض false است.

درون‌ریزی یک فایل tar.gz نقطه بررسی که توسط پودمن برون‌بری شده است. از این گزینه می‌توان برای درون‌ریزی یک کانتینر دارای نقطه بررسی از میزبانی دیگر استفاده کرد.
مهم: این گزینه به نام یا شناسه کانتینر به عنوان آرگومان ورودی نیاز ندارد.

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

درون‌ریزی یک فایل tar.gz پیش‌نقطه بررسی که توسط پودمن برون‌بری شده است. این گزینه باید همراه با -i یا --import استفاده شود. این گزینه تنها روی runc 1.0-rc3 یا بالاتر کار می‌کند.
مهم: این گزینه در کلاینت ریموت، از جمله ماشین‌های Mac و Windows (به‌استثنای WSL2) پشتیبانی نمی‌شود.

تمام فایل‌های موقت گزارش و آماری ایجادشده توسط CRIU در حین ایجاد نقطه بررسی و همچنین بازیابی را نگه می‌دارد. این فایل‌ها در صورت شکست عملیات بازیابی، برای اشکال‌زدایی بیشتر حذف نمی‌شوند. اگر بازیابی موفقیت‌آمیز باشد، این فایل‌ها از نظر تئوری نیازی نیستند، اما اگر به این فایل‌ها نیاز باشد پودمن می‌تواند آن‌ها را برای تحلیل بیشتر نگه دارد. این موارد شامل دایرکتوری نقطه بررسی به همراه تمام فایل‌های ایجادشده در طول فرایند ایجاد نقطه بررسی می‌شود. فضای مورد نیاز دایرکتوری نقطه بررسی تقریباً برابر با مقدار حافظه مورد نیاز فرآیندهای درون کانتینر دارای نقطه بررسی است.
بدون گزینه --keep, -k، نقطه بررسی مصرف شده و دیگر قابل استفاده مجدد نخواهد بود.
مقدار پیش‌فرض false است.

به‌جای ارائه شناسه یا نام کانتینر، از آخرین کانتینر ایجادشده استفاده می‌کند. مقدار پیش‌فرض false است.
مهم: این گزینه در کلاینت ریموت پودمن، از جمله ماشین‌های Mac و Windows (به‌استثنای WSL2) در دسترس نیست. این گزینه به نام یا شناسه کانتینر به عنوان آرگومان ورودی نیاز ندارد.

اگر یک کانتینر از یک فایل tar.gz نقطه بررسی بازیابی شود، امکان تغییر نام آن با --name, -n وجود دارد. از این طریق می‌توان یک کانتینر را چندین بار با نام‌های مختلف از یک نقطه بررسی بازیابی کرد.

اگر از گزینه --name, -n استفاده شود، پودمن تلاشی برای تخصیص همان نشانی IP که کانتینر پیش از نقطه بررسی استفاده می‌کرد نمی‌کند؛ زیرا هر نشانی IP تنها یک بار قابل استفاده است و کانتینر بازیابی‌شده نشانی IP دیگری دریافت خواهد کرد. این همچنین بدان معناست که گزینه --name, -n نمی‌تواند در ترکیب با --tcp-established استفاده شود.
مهم: این گزینه تنها برای یک ایمیج نقطه بررسی یا در ترکیب با --import, -i در دسترس است.

بازیابی یک کانتینر درون پاد با نام name. پاد مقصد برای این بازیابی باید فضاهای نام مشترک یکسانی با پادی داشته باشد که کانتینر از آن نقطه بررسی شده است (به podman pod create --share مراجعه کنید).
مهم: این گزینه تنها برای یک ایمیج نقطه بررسی یا در ترکیب با --import, -i در دسترس است.

این گزینه حداقل به CRIU 3.16 نیاز دارد.

چاپ آمار مربوط به بازیابی کانتینر(ها). خروجی در قالب یک آرایه JSON ارائه می‌شود و حاوی اطلاعاتی در مورد مدت زمان لازم برای عملیات مختلف بازیابی است. بسیاری از آمارهای بازیابی توسط CRIU ایجاد شده و صرفاً به پودمن منتقل می‌شوند. اطلاعات زیر در آرایه JSON ارائه می‌شود:

  • podman_restore_duration: مدت زمان کل (به میکروثانیه) مورد نیاز برای بازیابی تمام نقاط بررسی.
  • runtime_restore_duration: مدت زمانی (به میکروثانیه) که زمان اجرای کانتینر برای بازیابی نقطه بررسی نیاز داشته است.
  • forking_time: مدت زمانی (به میکروثانیه) که CRIU برای ایجاد (fork کردن) تمام فرآیندها در کانتینر بازیابی‌شده نیاز داشته است (اندازه‌گیری‌شده توسط CRIU).
  • restore_time: مدت زمانی (به میکروثانیه) که CRIU برای بازیابی تمام فرآیندها در کانتینر نیاز داشته است (اندازه‌گیری‌شده توسط CRIU).
  • pages_restored: تعداد صفحات حافظه بازیابی‌شده (اندازه‌گیری‌شده توسط CRIU).

مقدار پیش‌فرض false است.

پورت‌هایی را که کانتینر منتشر می‌کند (همان‌طور که در زمان راه‌اندازی اولیه کانتینر پیکربندی شده بود) با مجموعه جدیدی از قوانین هدایت پورت جایگزین می‌کند.

برای جزئیات بیشتر، podman run --publish را ببینید.
مهم: این گزینه تنها برای یک ایمیج نقطه بررسی یا در ترکیب با --import, -i در دسترس است.

بازیابی یک کانتینر و بستن تمام اتصالات TCP. این گزینه زمانی مفید است که پس از بازیابی به اتصالات TCP نیازی نباشد یا اتصالات توسط برنامه مجدداً برقرار شوند. اگر ایمیج نقطه بررسی با --tcp-close ایجاد شده باشد، این گزینه باید در حین بازیابی استفاده شود.
مقدار پیش‌فرض false است.

بازیابی یک کانتینر به همراه اتصالات TCP برقرارشده. اگر ایمیج نقطه بررسی حاوی اتصالات TCP برقرارشده باشد، این گزینه در حین بازیابی الزامی است. اگر ایمیج نقطه بررسی حاوی اتصالات TCP برقرارشده نباشد، این گزینه نادیده گرفته می‌شود. پیش‌فرض، بازیابی نکردن کانتینرها با اتصالات TCP برقرارشده است.
مقدار پیش‌فرض false است.

بازیابی کانتینر "mywebserver".

# podman container restore mywebserver

درون‌ریزی یک فایل نقطه بررسی و یک فایل پیش‌نقطه بررسی.

# podman container restore --import-previous pre-checkpoint.tar.gz --import checkpoint.tar.gz

راه‌اندازی کانتینر "mywebserver". ایجاد یک نقطه بررسی از کانتینر و برون‌بری آن. بازیابی کانتینر با محدوده‌های پورت متفاوت از فایل برون‌بری‌شده.

$ podman run --rm -p 2345:80 -d webserver
# podman container checkpoint -l --export=dump.tar
# podman container restore -p 5432:8080 --import=dump.tar

راه‌اندازی یک کانتینر با نام "foobar-1". ایجاد یک ایمیج نقطه بررسی "foobar-checkpoint". بازیابی کانتینر از ایمیج نقطه بررسی با نامی متفاوت.

# podman run --name foobar-1 -d webserver
# podman container checkpoint --create-image foobar-checkpoint foobar-1
# podman inspect foobar-checkpoint
# podman container restore --name foobar-2 foobar-checkpoint
# podman container restore --name foobar-3 foobar-checkpoint

podman(1), podman-container-checkpoint(1), podman-run(1), podman-pod-create(1), criu(8)

سپتامبر ۲۰۱۸، در ابتدا توسط Adrian Reber به نشانی areber@redhat.com گردآوری شد ⟨mailto:areber@redhat.com⟩