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