名称¶
podman-container-restore - 从检查点恢复一个或多个容器
简介¶
podman container restore [选项] 名称 […]
描述¶
podman container restore 从容器检查点或检查点镜像恢复容器。容器 ID、镜像 ID 或 名称 用作输入。
选项¶
--all, -a¶
恢复所有已检查点的容器。
默认值为 false。
重要提示:此选项不需要容器名称或 ID 作为输入参数。
--file-locks¶
恢复带有文件锁定的容器。此选项是恢复检查点镜像中的文件锁定所必需的。如果检查点镜像不包含文件锁定,则此选项将被忽略。默认不恢复文件锁定。
默认值为 false。
--ignore-rootfs¶
如果从检查点 tar.gz 文件恢复容器,它也可能包含所有根文件系统更改。使用 --ignore-rootfs 可以明确禁用将这些根文件系统更改应用于恢复的容器。
默认值为 false。
重要提示:此选项仅与 --import, -i 结合使用时可用。
--ignore-static-ip¶
如果容器是使用 --ip 启动的,恢复的容器也尝试使用该 IP 地址,如果该 IP 地址已被占用,则恢复失败。当从导出的检查点多次恢复容器时,使用 --name, -n 可能会发生这种情况。
使用 --ignore-static-ip 告诉 Podman 忽略 IP 地址,如果它在容器创建期间使用 --ip 配置。
默认值为 false。
--ignore-static-mac¶
如果容器是使用 --mac-address 启动的,恢复的容器也尝试使用该 MAC 地址,如果该 MAC 地址已被占用,则恢复失败。当从导出的检查点多次恢复容器时,使用 --name, -n 可能会发生这种情况。
使用 --ignore-static-mac 告诉 Podman 忽略 MAC 地址,如果它在容器创建期间使用 --mac-address 配置。
默认值为 false。
--ignore-volumes¶
此选项必须与 --import, -i 选项结合使用。当使用此选项从检查点 tar.gz 文件恢复容器时,不恢复关联卷的内容。
默认值为 false。
--import, -i=文件¶
导入由 Podman 导出的检查点 tar.gz 文件。这可用于从另一个主机导入已检查点的容器。
重要提示:此选项不需要容器名称或 ID 作为输入参数。
在导入检查点文件期间,Podman 会选择在检查点期间使用的相同容器运行时。这在容器创建期间指定了特定的(非默认)容器运行时时尤其重要。如果恢复期间指定的容器运行时与用于容器创建的容器运行时不匹配,Podman 也会中止恢复。
--import-previous=文件¶
导入由 Podman 导出的预检查点 tar.gz 文件。此选项必须与 -i 或 --import 一起使用。它仅适用于 runc 1.0-rc3
或 更高版本
。重要提示:此选项在远程客户端(包括 Mac 和 Windows (WSL2 除外) 机器)上不受支持。
--keep, -k¶
保留 CRIU
在检查点和恢复期间创建的所有临时日志和统计文件。如果恢复失败,这些文件不会被删除以进行进一步调试。如果恢复成功,这些文件理论上是不需要的,但如果需要这些文件,Podman 可以保留文件以进行进一步分析。这包括检查点目录和在检查点期间创建的所有文件。检查点目录所需的大小大约等于已检查点容器中进程所需的内存量。
如果没有 --keep, -k 选项,则检查点将被消耗,不能再次使用。
默认值为 false。
--latest, -l¶
不是提供容器 ID 或名称,而是使用最后创建的容器。默认值为 false。重要提示:此选项不适用于远程 Podman 客户端,包括 Mac 和 Windows (WSL2 除外) 机器。此选项不需要容器名称或 ID 作为输入参数。
--name, -n=名称¶
如果从检查点 tar.gz 文件恢复容器,可以使用 --name, -n 重命名它。这样可以从检查点多次恢复容器,使用不同的名称。
如果使用 --name, -n 选项,Podman 不会尝试为容器分配检查点之前使用的相同 IP 地址,因为每个 IP 地址只能使用一次,并且恢复的容器将拥有另一个 IP 地址。这也意味着 --name, -n 不能与 --tcp-established 结合使用。
重要提示:此选项仅适用于检查点镜像或与 --import, -i 结合使用。
--pod=name¶
将容器恢复到 pod 名称中。此恢复的目标 pod 必须与此容器检查点来源的 pod 共享相同的命名空间(请参阅 podman pod create --share)。
重要提示:此选项仅适用于检查点镜像或与 --import, -i 结合使用。
此选项需要至少 CRIU 3.16。
--print-stats¶
打印有关恢复容器的统计信息。输出以 JSON 数组的形式呈现,包含不同恢复操作所需时间的详细信息。许多恢复统计信息由 CRIU 创建并直接传递给 Podman。JSON 数组中提供了以下信息:
podman_restore_duration:恢复所有检查点所需的总时间(以微秒为单位)。
runtime_restore_duration:容器运行时恢复检查点所需的时间(以微秒为单位)。
forking_time:CRIU 在恢复的容器中创建(fork)所有进程所需的时间(由 CRIU 测量)。
restore_time:CRIU 恢复容器中所有进程所需的时间(由 CRIU 测量)。
pages_restored:恢复的内存页数(由 CRIU 测量)。
默认值为 false。
--publish, -p=端口¶
将容器在初始容器启动期间配置的发布端口替换为一组新的端口转发规则。
有关更多详细信息,请参阅 podman run --publish。
--tcp-close¶
恢复容器并关闭所有 TCP 连接。此选项在恢复后不需要 TCP 连接或应用程序将重新建立连接时很有用。如果检查点镜像使用 --tcp-close 创建,则在恢复期间应使用此选项。
默认值为 false。
--tcp-established¶
恢复具有已建立 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)
历史¶
2018 年 9 月,最初由 Adrian Reber areber@redhat.com 编译