需要重新启动主机操作系统,但如何保存正在运行的容器的状态,并在主机系统重新启动后从保存的点恢复容器?
答案1
配置 Docker 的实验选项:
$ sudo nano /etc/docker/daemon.json
添加
{
"experimental": true
}
按 CTRL+X,选择 Y 并按 Enter 保存新文件。
或者
$ sudo echo '{"experimental": true}' >> /etc/docker/daemon.json
重启docker服务:
$ sudo service docker restart
检查与
$ docker version
如果确实启用了实验。
安装 CRIU 包
$ sudo apt-get install criu
在 CRIU 上使用 Docker 检查点尝试简单的场景
docker run --security-opt=seccomp:unconfined --name cr -d busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
检查值:
docker logs cr
为容器创建检查点:
docker checkpoint create --leave-running=true cr checkpoint0
让容器运行一段时间并再次检查日志
$ docker logs cr
现在停止容器:
$ docker stop cr
并从检查点重新启动/重新创建容器:
docker start --checkpoint checkpoint0 cr
检查日志:
docker logs cr
您会发现日志在创建检查点的值处恢复。