赞
踩
在高版本linux内核时,docker无法进行checkpoint,必须降核才能checkpoint,目前内核版本是4.4.0-109。
一、首先在sources.list最后一行写入下面内容
- vi /etc/apt/sources.list
- deb http://security.ubuntu.com/ubuntu trusty-security main
二、升级apt-get
apt-get update
三、查询列表中可更新的内核
sudo apt-cache search linux-image
四、安装4.4版本内核
apt-get install linux-image-extra-4.4.0-109-generic
五、设置grub并更新
- vim /etc/default/grub
- GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-109-generic"
- update-grub
六、重启系统:reboot
发现内核5.0.0也可以运行,降低为5.0.0办法为:
一、去下载对应版本https://kernel.ubuntu.com/~kernel-ppa/mainline/,除了带有lowlatency的都要下载,
二、安装
sudo dpkg -i *.deb
三、设置grub并更新
- vim /etc/default/grub
- GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.0.0-050000-generic"
- update-grub
四、把其他内核文件删除
- rm -rf /boot/vmlinuz-5.3.0-56-generic
- rm -rf /boot/vmlinuz-5.0.0-34-generic
- rm -rf /boot/initrd.img-5.0.0-34-generic
- rm -rf /boot/vmlinuz-5.0.0-32-generic
五、列出内核软件包,把不需要的删除
dpkg --get-selections |grep linux-image
删除其他版本的内核,对deinstall的需要使用dpkg卸载,例如:
- sudo apt-get remove linux-headers-4.15.0-45
- sudo dpkg -P linux-image-4.15.0-54-generic
这两天使用docker进行热迁移,checkpoint之后始终没办法restore,换系统,降内核均无果。
然后怀疑是不是criu版本问题,一搜发现是docker版本问题。。立马换docker版本17.06
一、先卸载原来的docker
sudo apt-get remove docker docker-engine docker-ce docker.io
二、安装前准备,事先切换root
- apt update
- apt install apt-transport-https ca-certificates curl software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
- add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
三、查看docker可用版本
apt-cache madison docker-ce
四、安装指定版本17.06
apt install docker-ce=17.06.0~ce-0~ubuntu
五、检查安装
docker info
最后docker checkpoint之后就可以进行还原了!
另外,将docker加入用户组办法为:
- sudo groupadd docker
- sudo gpasswd -a $USER docker
- newgrp docker
更改docker存储驱动为:
打开/etc/docker/daemon.json,增加一行
- {
- "experimental": true,
- "storage-driver": "overlay2"
- }
然后 systemctl restart docker
安装CRIU
添加criu的第三方软件包
- sudo add-apt-repository ppa:criu/ppa
- sudo apt-get update
然后
sudo apt install criu
最后检查sudo criu check
如果输出 Looks Good!即安装成功
单个容器的checkpoint/restore:
checkpoint
docker run -d --name looper --security-opt seccomp:unconfined busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
docker logs looper
docker checkpoint create looper checkpoint1
restore
docker start --checkpoint checkpoint1 looper
跨容器迁移只需创建一个相同的容器,然后docker start --checkpoint-dir=xxx --checkpoint=xxx 容器名
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。