我尝试使用实验检查点功能来实现计算机之间的容器迁移。我在同一台计算机上找到了许多检查点和恢复的示例,但我只发现了有关在不同计算机之间迁移检查点的文档:
https://circleci.com/blog/checkpoint-and-restore-docker-container-with-criu/
但是,它使用的命令已过时,并且docker checkpoint恢复不再可用。而应使用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)上运行的容器的名称相同。但是我收到了这个错误:
没有这样的容器:one-13
这让我觉得我必须在开始检查点之前创建一个容器但是,我该怎么做?是不是应该从检查点自动创建?如果没有,有没有办法将检查点传递给docker create命令?这个用例的工作流程是什么?
谢谢。
答案 0 :(得分:0)
在目标主机中恢复容器之前,您必须创建一个容器:
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