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

podman-container-checkpoint - ایجاد نقطه بررسی از کانتینر در حال اجرا

podman container checkpoint [options] container [container ...]

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

مهم: اگر کانتینر از systemd به عنوان entrypoint استفاده می‌کند، ممکن است ایجاد نقطه بررسی از کانتینر امکان‌پذیر نباشد.

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

الگوریتم فشرده‌سازی مورد استفاده برای آرشیو نقطه بررسی ایجادشده با گزینه --export, -e را مشخص می‌کند. الگوریتم‌های ممکن عبارتند از zstd، none و gzip.
یک دلیل احتمالی برای استفاده از none، فعال‌سازی ایجاد سریع‌تر آرشیوهای نقطه بررسی است. فشرده نکردن آرشیو نقطه بررسی می‌تواند منجر به ایجاد سریع‌تر آن شود.
مقدار پیش‌فرض zstd است.

یک ایمیج نقطه بررسی از کانتینر در حال اجرا ایجاد می‌کند. این یک ایمیج استاندارد OCI است که در مخزن محلی ایمیج‌ها ایجاد می‌شود. این ایمیج شامل یک لایه منفرد است که تمام فایل‌های نقطه بررسی را در بر دارد. محتوای این لایه ایمیج در همان قالبی است که یک نقطه بررسی ایجادشده با --export دارد. یک ایمیج نقطه بررسی را می‌توان به یک رجیستری استاندارد کانتینر ارسال (push) کرد و روی سیستمی دیگر دریافت (pull) نمود تا مهاجرت کانتینر امکان‌پذیر شود. علاوه بر این، می‌توان ایمیج را با podman image save برون‌بری (export) کرد و با podman inspect مورد بازبینی قرار داد. بازبینی یک ایمیج نقطه بررسی اطلاعات اضافی را که به عنوان حاشیه‌نویسی (annotation) ذخیره شده‌اند، درباره محیط میزبان استفاده‌شده برای ایجاد نقطه بررسی نمایش می‌دهد:

  • io.podman.annotations.checkpoint.name: نام خوانا برای انسان از کانتینر اصلی.
  • io.podman.annotations.checkpoint.rawImageName: نام پردازش‌نشده ایمیج مورد استفاده برای ایجاد کانتینر اصلی (همان‌طور که توسط کاربر مشخص شده است).
  • io.podman.annotations.checkpoint.rootfsImageID: شناسه (ID) ایمیج مورد استفاده برای ایجاد کانتینر اصلی.
  • io.podman.annotations.checkpoint.rootfsImageName: نام ایمیج مورد استفاده برای ایجاد کانتینر اصلی.
  • io.podman.annotations.checkpoint.podman.version: نسخه Podman مورد استفاده برای ایجاد نقطه بررسی.
  • io.podman.annotations.checkpoint.criu.version: نسخه CRIU مورد استفاده برای ایجاد نقطه بررسی.
  • io.podman.annotations.checkpoint.runtime.name: زمان اجرای کانتینر (مانند runc یا crun) مورد استفاده برای ایجاد نقطه بررسی.
  • io.podman.annotations.checkpoint.runtime.version: نسخه زمان اجرای کانتینر مورد استفاده برای ایجاد نقطه بررسی.
  • io.podman.annotations.checkpoint.conmon.version: نسخه conmon مورد استفاده با کانتینر اصلی.
  • io.podman.annotations.checkpoint.host.arch: معماری پردازنده (CPU) میزبانی که نقطه بررسی روی آن ایجاد شده است.
  • io.podman.annotations.checkpoint.host.kernel: نسخه هسته لینوکس میزبانی که نقطه بررسی روی آن ایجاد شده است.
  • io.podman.annotations.checkpoint.cgroups.version: نسخه cgroup مورد استفاده توسط میزبانی که نقطه بررسی روی آن ایجاد شده است.
  • io.podman.annotations.checkpoint.distribution.version: نسخه توزیع میزبانی که نقطه بررسی روی آن ایجاد شده است.
  • io.podman.annotations.checkpoint.distribution.name: نام توزیع میزبانی که نقطه بررسی روی آن ایجاد شده است.

نقطه بررسی را به یک آرشیو برون‌بری (export) می‌کند. نوع آرشیو با --compress مشخص می‌شود. نقطه بررسی برون‌بری‌شده را می‌توان برای درون‌ریزی (import) کانتینر روی سیستمی دیگر استفاده کرد و در نتیجه مهاجرت زنده کانتینر را ممکن ساخت. این آرشیو نقطه بررسی همچنین شامل تمام تغییرات اعمال‌شده در سیستم‌فایل ریشه (root file-system) کانتینر نیز می‌شود، مگر اینکه صریحاً با استفاده از --ignore-rootfs غیرفعال شده باشد.

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

اگر یک نقطه بررسی به یک آرشیو برون‌بری شود، با کمک --ignore-rootfs امکان‌پذیر است که درج تغییرات سیستم‌فایل ریشه در فایل آرشیو نقطه بررسی را صریحاً غیرفعال کرد.
مقدار پیش‌فرض false است.
مهم: این گزینه فقط در ترکیب با --export, -e کار می‌کند.

این گزینه باید در ترکیب با گزینه --export, -e استفاده شود. هنگامی که این گزینه مشخص شود، محتوای حجم‌های (volumes) مرتبط با کانتینر در آرشیو نقطه بررسی گنجانده نمی‌شود.
مقدار پیش‌فرض false است.

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

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

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

برای حفظ یکپارچگی نقطه بررسی، Podman قبل از تخلیه حافظه کانتینر، cgroup کانتینر را منجمد (freeze) می‌کند و فقط پس از ثبت تغییرات سیستم‌فایل ریشه و حجم‌های نام‌گذاری‌شده، آن را مجدداً از انجماد خارج می‌سازد (thaw). این بدان معناست که کانتینر در طول مدت ایجاد نقطه بررسی متوقف (pause) می‌شود، اما تصویر حافظه و سیستم‌فایل آن تضمین می‌شوند که همان نقطه زمانی یکسان را منعکس کنند. کانتینرهایی که با --cgroups=disabled راه‌اندازی شده‌اند قابل منجمد شدن نیستند و بنابراین این ضمانت را دریافت نمی‌کنند. اگر منجمد کردن کانتینر ناموفق باشد، Podman ایجاد نقطه بررسی را ادامه می‌دهد و هشدار می‌دهد که این ضمانت یکپارچگی قابل ارائه نبوده است.

تنها اطلاعات حافظه کانتینر را تخلیه (dump) می‌کند و کانتینر را در حال اجرا باقی می‌گذارد. عملیات بعدی جایگزین تخلیه‌های قبلی می‌شود.
مقدار پیش‌فرض false است.

قابلیت ایجاد نقطه بررسی تنها از حافظه کانتینر و در دومین نقطه بررسی تنها بازنویسی صفحاتی از حافظه که از اولین نقطه بررسی تغییر کرده‌اند، به بیت soft-dirty هسته لینوکس وابسته است که روی همه سیستم‌ها در دسترس نیست، چرا که به معماری سیستم و پیکربندی هسته لینوکس بستگی دارد. برنامه Podman بررسی می‌کند که آیا سیستم فعلی از این قابلیت پشتیبانی می‌کند یا خیر و اگر سیستم پشتیبانی نکند خطایی بازمی‌گرداند.

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

  • podman_checkpoint_duration: زمان کلی (به میکروثانیه) مورد نیاز برای ایجاد تمام نقاط بررسی.
  • runtime_checkpoint_duration: زمان (به میکروثانیه) مورد نیاز زمان اجرای کانتینر برای ایجاد نقطه بررسی.
  • freezing_time: زمان (به میکروثانیه) مورد نیاز CRIU برای متوقف کردن (منجمد کردن) تمام فرآیندهای درون کانتینر (اندازه‌گیری‌شده توسط CRIU).
  • frozen_time: زمان (به میکروثانیه) که تمام فرآیندهای درون کانتینر متوقف (منجمد) بودند (اندازه‌گیری‌شده توسط CRIU).
  • memdump_time: زمان (به میکروثانیه) مورد نیاز برای استخراج تمام صفحات حافظه لازم از تمام فرآیندهای کانتینر (اندازه‌گیری‌شده توسط CRIU).
  • memwrite_time: زمان (به میکروثانیه) مورد نیاز برای نوشتن تمام صفحات حافظه لازم در فایل‌های ایمیج نقطه بررسی مربوطه (اندازه‌گیری‌شده توسط CRIU).
  • pages_scanned: تعداد صفحات حافظه اسکن‌شده برای تعیین اینکه آیا نیاز به ایجاد نقطه بررسی دارند یا خیر (اندازه‌گیری‌شده توسط CRIU).
  • pages_written: تعداد صفحات حافظه که واقعاً در فایل‌های ایمیج نقطه بررسی نوشته شده‌اند (اندازه‌گیری‌شده توسط CRIU).

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

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

از کانتینر به همراه فایل‌های ایمیج CRIU قبلی در پیش‌تخلیه (pre-dump) نقطه بررسی ایجاد می‌کند. این گزینه فقط با runc 1.0-rc3 یا بالاتر کار می‌کند.
مقدار پیش‌فرض false است.
مهم: این گزینه همراه با --pre-checkpoint در دسترس نیست.

این گزینه نیازمند آن است که پیش‌تر از گزینه --pre-checkpoint روی همان کانتینر استفاده شده باشد. بدون وجود یک پیش‌نقطه بررسی موجود، این گزینه با شکست مواجه می‌شود.

همچنین برای اطلاعات بیشتر درباره در دسترس بودن --pre-checkpoint در سیستم‌های مختلف، به --pre-checkpoint مراجعه کنید.

ایجاد یک نقطه بررسی از کانتینر "mywebserver".

# podman container checkpoint mywebserver

ایجاد یک ایمیج نقطه بررسی برای کانتینر "mywebserver".

# podman container checkpoint --create-image mywebserver-checkpoint-1 mywebserver

تخلیه اطلاعات حافظه آخرین کانتینر درون یک فایل آرشیو.

# podman container checkpoint -P -e pre-checkpoint.tar.zst -l

نگه‌داشتن اطلاعات حافظه کانتینر از یک تخلیه قدیمی‌تر و افزودن اطلاعات جدید حافظه کانتینر به آن.

# podman container checkpoint --with-previous -e checkpoint.tar.zst -l

تخلیه اطلاعات حافظه آخرین کانتینر درون یک آرشیو با روش فشرده‌سازی مشخص‌شده.

# podman container checkpoint -l --compress=none --export=dump.tar
# podman container checkpoint -l --compress=gzip --export=dump.tar.gz

podman(1), podman-container-restore(1), criu(8)

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