docker - 使用criu进行Docker容器迁移

在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,并且checkpoint可以单独工作。

最佳答案

使用CRIU的Docker容器迁移仍在开发中。到目前为止,检查点和还原集成到Docker的重点一直是同一台计算机上的C / R。

就是说,不仅可以在检查点之后复制CRIU创建的容器镜像(如您所做的那样),而且可以通过复制Dockert在/var/lib/docker/0.0/中由Docker创建的容器目录来手动迁移容器, container / $ cid 以及/var/lib/docker/0.0/image中容器的根文件系统。手动迁移容器的文件系统有些棘手,特别是在使用AUFS或OverlayFS等联合文件系统的情况下。另外,您需要在目标计算机上重新启动Docker守护程序才能看到该容器。

https://stackoverflow.com/questions/34424550/

相关文章:

hadoop - 使用HCatLoader进行PIG,Java堆空间错误

docker - Travis未缓存目录

docker - Docker容器中的Haproxy不稳定

ubuntu - Docker:系统错误:无法创建 pivot_root 目录

jenkins - 无法以非 root 用户身份运行 docker?

windows - Windows Server上的Docker容器

hadoop - Pig:访问内部元组的字段进行过滤

docker - 我的Docker容器中包含哪些运行标志

docker - 使用 Docker 部署集群(即 MongoDb/ElasticSearch)并链

docker - 我自己对 boot2docker 的自定义没有反射(reflect)到 iso 镜