3

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

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) 上运行的容器的名称相同的地方。但是我收到此错误:

没有这样的容器:1-13

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

谢谢你。

4

1 回答 1

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
于 2018-03-18T03:34:18.577 回答