使用criu实现跨虚拟机之间的容器迁移

环境
  • ubuntu18.04,内核:4.15.0-142-generic【ubuntu20.04不可用,ubuntu16.04不可下载docker17了】
  • docker:17.06.0-ce【太高版本不可】
  • criu:3.14
  • 两台虚拟机ip:服务端【192.168.80.212】、客户端【192.168.80.211】
  • 应用对应的版本,亲测有效!
docker安装
  1. 镜像使用阿里云镜像:ubuntu镜像-ubuntu下载地址-ubuntu安装教程-阿里巴巴开源镜像站 (aliyun.com)
  2. 使用deb进行安装,安装包下载:Index of linux/ubuntu/dists/xenial/pool/stable/amd64/ (docker.com)
  3. 命令:dpkg -i docker-ce_17.06.0~ce-0~ubuntu_amd64.deb.deb 进行安装。
  4. docker启动实验特性:编辑/etc/docker/daemon.json,添加{"experimental":true}
criu安装
  1. 安装的依赖包:【可能会少】

    protobuf-compiler protobuf-c-compiler protobuf-c-compiler python-protobuf   gcc build-essential  asciidoc  libprotobuf-dev libprotobuf-c-dev libnl-3-dev libcap-dev libnet-dev libbsd-dev pkg-config
    
  2. criu安装包下载:http://download.openvz.org/criu

  3. 进入criu文件夹,进行安装:makecp ./criu/criu /usr/local/bin

  4. 检查是否安装成功criu check或者criu check --all【出现下列问题,并不影响checkpoint操作】
    在这里插入图片描述

NFS共享文件夹

共享文件夹为:/home/container,提前在两个虚拟机创建文件夹

服务端

  1. 安装NFS服务器:apt-get install nfs-kernel-server;开启文件夹权限:chmod -R 777 /home/container
  2. 编辑文件/etc/exports,允许客户端192.168.80.211挂载:/home/container 192.168.80.211(rw,sync,no_root_squash,no_subtree_check);使文件生效:exportfs -rv
  3. 重启NFS服务:exportfs -rv/etc/init.d/nfs-kernel-server restart
  4. 设置firewalld
    • 开启防火墙,允许所有传入和传出连接:ufw enableufw default allow incomingufw default allow outgoing
    • 允许客户端接入:ufw allow from 192.168.80.211 to any port nfs

客户端

  1. 安装NFS客户端:apt-get install nfs-common
  2. 挂载文件夹:mount -t nfs 192.168.80.212:/home/container /home/container
测试:

服务端:

  1. 运行容器:docker run -d --name looper busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
  2. 中断程序,在/home/container/目录下存储容器的运行状态:docker checkpoint create --checkpoint-dir=/home/container/ looper checkpoint

客户端:

  1. 创建新容器,但是不启动:docker create --name looper1 busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
  2. 恢复容器:docker start --checkpoint-dir=/home/container/56cb0db59a64455010d48a5bbe1fb71e343f904a6e05cd56842baadafb2dfb34/checkpoints/ --checkpoint=checkpoint looper1【注意路径,到checkpoints目录下】

两台虚拟机中容器的运行状态查询:【我两台虚拟机之间是克隆的,所以名字没改】
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
虚拟迁移是指在虚拟化环境下将正在运行的虚拟从一个物理主迁移到另一个物理主,而无需停止虚拟的运行。虚拟迁移参数的含义如下: 1. CPU/Memory Thresholds:CPU和内存阈值。当源物理主的CPU和内存使用率超过这个阈值时,虚拟迁移会自动启动。 2. Network Bandwidth:网络带宽。虚拟迁移需要在源物理主和目标物理主之间传输大量数据,网络带宽越大,虚拟迁移的速度就越快。 3. Network Latency:网络延迟。虚拟迁移需要在源物理主和目标物理主之间传输大量数据,网络延迟越小,虚拟迁移的速度就越快。 4. Storage Bandwidth:存储带宽。虚拟迁移需要将虚拟的磁盘文件从源物理主传输到目标物理主,存储带宽越大,虚拟迁移的速度就越快。 5. Storage Latency:存储延迟。虚拟迁移需要将虚拟的磁盘文件从源物理主传输到目标物理主,存储延迟越小,虚拟迁移的速度就越快。 虚拟迁移使用步骤如下: 1. 确保源物理主和目标物理主之间的网络连接正常,并且存储设备可以被源物理主和目标物理主同时访问。 2. 在源物理主上选择要迁移虚拟,并启动虚拟迁移。 3. 在目标物理主上接受虚拟迁移,并等待完成。 4. 确认虚拟已经在目标物理主上成功启动,并且正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值