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

    Interesting Posts