第 22 章 创建并恢复容器检查点
Checkpoint/Restore in Userspace(CRIU)是一个软件,可让您在正在运行的容器或独立应用程序中设置检查点,并将它的状态保存到磁盘中。您可以在重启时同时使用保存的数据来恢复容器。
内核不支持 AArch64 上的预复制检查点。
22.1. 本地创建并恢复容器检查点 复制链接链接已复制到粘贴板!
这个示例基于 Python 的 web 服务器,该服务器会返回一个整数,它会在每个请求后递增。
先决条件
-
container-tools模块已安装。
流程
创建基于 Python 服务器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下定义创建容器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 容器基于通用基础镜像(UBI 8)并使用基于 Python 的服务器。
构建容器:
podman build . --tag counter
# podman build . --tag counterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 文件
counter.py和Containerfile是容器构建进程(podman build)的输入。构建的镜像存储在本地,并使用标签counter进行标记。以 root 用户身份启动容器:
podman run --name criu-test --detach counter
# podman run --name criu-test --detach counterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要列出所有正在运行的容器,请输入:
podman ps
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e4f82fd84d48 localhost/counter:latest 5 seconds ago Up 4 seconds ago criu-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 显示容器的 IP 地址:
podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}"# podman inspect criu-test --format "{{.NetworkSettings.IPAddress}}" 10.88.0.247Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将请求发送到容器:
curl 10.88.0.247:8088 curl 10.88.0.247:8088
# curl 10.88.0.247:8088 0 # curl 10.88.0.247:8088 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器创建一个检查点:
podman container checkpoint criu-test
# podman container checkpoint criu-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启系统:
恢复容器:
podman container restore --keep criu-test
# podman container restore --keep criu-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将请求发送到容器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,这个结果不会再次从
0开始,而是从之前的值开始。
这样,您可以通过重新引导轻松保存完整的容器状态。