名称

podman-container-checkpoint - 检查点一个或多个正在运行的容器

概要

podman container checkpoint [选项] 容器 [容器 …]

描述

podman container checkpoint 检查点一个或多个容器中的所有进程。可以使用podman-container-restore从检查点恢复容器容器 ID名称用作输入。

重要:如果容器使用systemd 作为入口点,则可能无法对容器进行检查点。

选项

--all, -a

检查点所有正在运行的容器
默认值为false
重要:此选项不需要容器名称或 ID 作为输入参数。

--compress, -c=zstd | none | gzip

指定使用--export, -e选项创建的检查点存档使用的压缩算法。可能的算法是zstdnonegzip
使用none 的一个可能原因是启用更快地创建检查点存档。不压缩检查点存档会导致更快的检查点存档创建。
默认值为zstd

--create-image=镜像

从正在运行的容器创建一个检查点镜像。这是一个在本地镜像存储库中创建的标准 OCI 镜像。它包含单个层,其中包含所有检查点文件。此镜像层的內容与使用--export创建的检查点格式相同。可以使用标准容器注册表推送检查点镜像,并在不同的系统上拉取以启用容器迁移。此外,可以使用podman image save导出镜像,并使用podman inspect进行检查。检查检查点镜像会显示有关用于执行检查点的宿主环境的额外信息,这些信息存储为注释

  • 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: 创建检查点的宿主机的 Linux 内核版本。

  • io.podman.annotations.checkpoint.cgroups.version: 创建检查点的宿主机的 cgroup 版本。

  • io.podman.annotations.checkpoint.distribution.version: 创建检查点的宿主机的发行版版本。

  • io.podman.annotations.checkpoint.distribution.name: 创建检查点的宿主机的发行版名称。

--export, -e=存档

将检查点导出到 tar.gz 文件。导出的检查点可用于在另一个系统上导入容器,从而实现容器实时迁移。此检查点存档还包括对容器根文件系统的更改,除非使用--ignore-rootfs明确禁用。

--file-locks

使用文件锁检查点容器。如果容器中运行的应用程序使用文件锁,则在检查点和恢复期间需要此选项。否则,对使用文件锁的容器进行检查点将失败。如果未使用文件锁,则此选项会被忽略。
默认值为false

--ignore-rootfs

如果将检查点导出到 tar.gz 文件,则可以使用--ignore-rootfs明确禁用将对根文件系统的更改包含到检查点存档文件中。
默认值为false
重要:此选项仅与--export, -e一起使用。

--ignore-volumes

此选项必须与--export, -e选项一起使用。指定此选项时,与容器关联的卷的内容不会包含在检查点 tar.gz 文件中。
默认值为false

--keep, -k

保留 CRIU 在检查点期间创建的所有临时日志和统计信息文件。如果检查点失败,则不会删除这些文件,以便进行进一步的调试。如果检查点成功,则理论上不需要这些文件,但如果需要这些文件,Podman 可以保留这些文件以供进一步分析。
默认值为false

--latest, -l

不要提供容器 ID名称,而是使用最后创建的容器。默认值为false重要:此选项在远程 Podman 客户端(包括 Mac 和 Windows(不包括 WSL2)机器)中不可用。此选项不需要容器名称或 ID 作为输入参数。

--leave-running, -R

在检查点后让容器保持运行状态,而不是停止它。
默认值为false

--pre-checkpoint, -P

仅转储容器的内存信息,让容器保持运行状态。后续操作会覆盖之前的转储。它仅适用于runc 1.0-rc3更高
默认值为false

仅检查点容器内存并在第二个检查点中仅写入自第一个检查点以来已更改的内存页面的功能依赖于 Linux 内核的软脏位,该位并非在所有系统上都可用,因为它取决于系统架构和 Linux 内核的配置。Podman 会验证当前系统是否支持此功能,如果当前系统不支持,则返回错误。

--tcp-established

使用已建立的 TCP 连接检查点容器。如果检查点镜像包含已建立的 TCP 连接,则在恢复期间需要此选项。默认为不检查点具有已建立的 TCP 连接的容器
默认值为false

--with-previous

使用之前在预转储中创建的 criu 镜像文件检查点容器。它仅适用于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.gz -l

保留来自旧转储的容器内存信息并添加新的容器内存信息。

# podman container checkpoint --with-previous -e checkpoint.tar.gz -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)

历史

2018 年 9 月,最初由 Adrian Reber areber@redhat.com 编写