【问题标题】:Docker container migrationDocker 容器迁移
【发布时间】:2017-02-27 14:12:03
【问题描述】:

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

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 in本例)。

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

没有这样的容器:1-13

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

谢谢。

【问题讨论】:

    标签: docker migration checkpoint


    【解决方案1】:

    在目标主机恢复容器之前,必须先创建一个容器:

     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 start with checkpoint-dir 时收到错误Error response from daemon: custom checkpointdir is not supported
    • @MiguelMota:我在写这篇文章时使用了 docker 17.03.2-ce,CRIU v3.8。如果您使用的是较新版本的 docker,我认为选项 checkpoint-dir 已删除(github.com/moby/moby/issues/34601)。你可以忽略 checkpoint-dir 选项,让 docker 存储在默认位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2017-05-06
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多