docker集装箱迁移与criu
在Saied Kazemi的帮助下,我能够通过docker 暂停并在Ubuntu 14上使用criu移植一个容器, 然后继续使用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,检查站单独运行。
Docker容器迁移使用CRIU仍在开发中。 到目前为止,检查点和恢复集成到Docker的重点已经在同一台机器上进行C / R。
也就是说,可以手动迁移容器,不仅可以复制CRIU在检查点之后创build的容器镜像(就像您已经完成的那样),而且还可以复制 Docker在/var/lib/docker/0.0/containers/中创build的容器目录 $ cid 以及 /var/lib/docker/0.0/image中的容器根文件系统 。 如果您使用AUFS或OverlayFS等联合文件系统,手动迁移容器的文件系统有点棘手。 另外,您需要重新启动目标机器上的Docker守护进程以查看容器。
在目标机器上,您必须创build或运行一个容器。 该容器将被恢复的图像覆盖。
所以: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
在我的情况下,这就像一个魅力!
这是我的testing:
跨节点迁移容器。
还原: 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}
github: https : //github.com/hixichen/criu_test