我正在尝试使用实验性检查点功能来实现机器之间的容器迁移。我发现了许多在同一台机器上进行检查点和还原的示例,但是我只找到了有关在不同机器之间迁移检查点的文档:

https://circleci.com/blog/checkpoint-and-restore-docker-container-with-criu/

但是,它使用的命令已过时,并且docker checkpoint restore不再可用。相反,应使用docker start --checkpoint语法。我已经完成了以下用例:

主机1:有一个docker容器正在运行,我在$ CHECKPOINT_FOLDER中的一个位置上执行了一个检查点,该位置是带有docker checkpoint create --checkpoint-dir=$CHECKPOINT_FOLDER $NAME checkpoint-$NAME的不同机器之间的共享文件夹,其中$ NAME是正在运行的容器的名称(本例中为13)。

主机2:可以访问$ CHECKPOINT_FOLDER文件夹,我可以看到创建的文件夹。我运行docker start --checkpoint-dir $CHECKPOINT_FOLDER --checkpoint checkpoint-$NAME $NAME,其中$ NAME再次与在主机1(one-13)上运行的容器的名称相同。但是我得到这个错误:

没有这样的容器:一个13

这使我认为必须在开始检查点之前创建一个容器,但是我该怎么做呢?不应从检查点自动创建?如果没有,是否有办法将检查点传递给docker create命令?该用例的工作流程是什么?

谢谢。

最佳答案

在将容器还原到目标主机之前,必须创建一个容器:

 sudo docker create --name $NAME <container-image>

创建容器$ NAME是为了确保已下载基本镜像并分配了磁盘空间,您可以在/ var / lib / docker / containers /中检入

然后,您可以使用$CHECKPOINT_FOLDER中的共享转储文件来还原它
 sudo docker start --checkpoint=checkpoint-$NAME --checkpoint-dir=$CHECKPOINT_FOLDER $NAME

或专门带有检查点名称
 sudo docker start --checkpoint=checkpoint-one-13 --checkpoint-dir=$CHECKPOINT_FOLDER $NAME

关于docker - Docker容器迁移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42487859/

10-13 06:33