名称¶
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-address 配置的 MAC 地址。
默认值为 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
或higher
。重要:此选项在远程客户端上不受支持,包括 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=名称¶
将容器还原到名称指定的 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-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 编写