Debian下实现Docker的热迁移备份
docker对此命令的官方说明:docker对于此命令官方文档
其中:docker官方文档建议此命令在 Docker 守护程序上是实验性的,它不应该用于生产环境。
1、docker开启实验性功能
(1)需要修改docker的配置文件
echo "{\"experimental\": true}" >> /etc/docker/daemon.json
(2) 修改之后重启docker
systemctl daemon-reload && systemctl restart docker
2、准备criu环境
(1)修改 /etc/apt/sources.list文件,添加以下内容。
因为criu的依赖系统库较多,不同操作系统依赖不一致。其他Linux版本或者其他criu版本在该网站进行检索找到对应的仓库添加:
deb http://ftp.de.debian.org/debian sid main
(2)更新一下列表
apt update
(3) 更新后直接下载安装,这个时候安装直接报错,解决办法在步骤4
apt install criu
(4)找到对应库并添加到环境,找到则cp到对应目录。没有找到请下载
find / -name "libcrypt.so.1" 2>/dev/null
vim /etc/profile
export LD_LIBRARY_PATH=LIB_PATH/:$LD_LIBRARY_PATH
source /etc/profle
(5)执行命令
apt --fix-broken install
(6)成功之后再次安装
apt install criu
3、Docker进行热迁移备份
1、对容器进行备份
docker checkpoint create --leave-running=false mydebian testCheck
--leave-running=true 完成后是否保留该容器
--checkpoint-dir PATH 创建后的备份文件存放的位置
mydebian 容器名或id
testCheck 备份的文件名
2、可以进查看目前的检查点情况
root@debian:~/check# docker checkpoint ls mydebian
CHECKPOINT NAME
testCheck
可以看到创建了一个testCheck 检查点
3、进行还原。该操作只是把当前的运行快照进行还原。
docker start --checkpoint testCheck mydebian
4、还原结束可手动删除该快照
docker checkpoint rm mydebian testCheck
4、测试
(1)测试方案:因为无法控制系统占用内存的大小,测试过程中利用程序锁住固定大小内存,统计该程序占用内存的大小作为该实验的变量。统计创建检查点和还原还原为容器的时间作为实验的结果。
(2)测试结果
该结果数据量大小为9.10GB时候测试机内存不足,于是重启机器后再次测试,所以第十次测试的结果更好一些。
测试数据大小 | 保存花费时间 | 还原花费时间 |
---|---|---|
1.12GB | 57s | 33s |
2.12GB | 94s | 64s |
3.13GB | 101s | 103s |
4.15GB | 126s | 109s |
5.15GB | 147s | 91s |
6.16GB | 173s | 113s |
7.17GB | 238s | 202s |
8.18GB | 282s | 331s |
9.10GB | 483s | 433s |
10.1GB | 333s | 229s |