在Saied Kazemi的帮助下,我可以通过这个docker suspend and resume using criu
在ubuntu 14上使用criu检查点和迁移容器现在我正在尝试将此容器从一个位置迁移到另一个位置。
我正在使用这些步骤:
export cid=$(docker run -d ubuntu tail -f /dev/null)
docker exec $cid touch /test.walid
mkdir /tmp/docker-migration
mkdir /tmp/docker-migration/$cid
docker checkpoint --image-dir=/tmp/docker-migration/$cid $cid
ssh walid@192.168.1.10 mkdir /tmp/docker-migration
ssh walid@192.168.1.10 mkdir /tmp/docker-migration/$cid
scp -r /tmp/docker-migration/$cid walid@192.168.1.10:/tmp/docker-migration
ssh walid@192.168.1.10 mkdir /tmp/$cid
scp -r /var/lib/docker/0.0/containers/$cid walid@192.168.1.13:/tmp
ssh -t walid@192.168.1.10 sudo mv /tmp/$cid /var/lib/docker/0.0/containers/
ssh -t walid@192.168.1.10 sudo docker restore --force=true --image-dir=/tmp/docker-migration/$cid $cid
得到了这个回复
来自守护程序的错误响应:没有这样的容器:fea338e81750b2377c2a845e30c49b7055519e39448091715c2c6a7896da3562 错误:无法还原一个或多个容器
两台机器都安装了docker和criu,检查点单独工作。
答案 0 :(得分:1)
使用CRIU的Docker容器迁移仍在开发中。到目前为止,检查点和恢复集成到Docker的重点是在同一台机器上进行C / R。
也就是说,可以手动迁移容器,不仅可以在检查点之后复制CRIU创建的容器映像(如您所做),还可以通过复制Docker在/中创建的容器目录来手动迁移容器var / lib / docker / 0.0 / containers / $ cid 以及/var/lib/docker/0.0/image中的容器的根文件系统。如果使用AUFS或OverlayFS等联合文件系统,手动迁移容器的文件系统有点棘手。此外,您需要在目标计算机上重新启动Docker守护程序以查看容器。
答案 1 :(得分:0)
在目标计算机上,您必须创建或运行容器。该容器将被恢复的图像覆盖。
所以: ssh -t walid@192.168.1.10 export NewID = $(docker run -d ubuntu tail -f / dev / null) ssh -t walid@192.168.1.10 sudo docker restore --force = true --image-dir = / tmp / docker-migration / $ cid $ newID
就我而言,这就像一个魅力!
答案 2 :(得分:0)
这是我的测试:
跨节点迁移容器。
还原: vagrant ssh vm2 - 'docker run --name = foo -d ubuntu tail -f / dev / null&& docker rm -f foo'
docker create --name=CONTAINNER_NAME base_image
docker restore --force=true --image-dir=/tmp/{dump files}