docker从检查点恢复 – cgroup和挂载点错误

我正在使用docker-checkpoint-restore来检查点,并保持源容器活动(–leave-running),然后将该检查点还原到新创build的容器(使用不同的IP地址)。

但是,我无法处理挂载点和cgroups。 当我使用检查点启动新的容器时,我得到了

1: mnt: Bind /home/abc to ./HOME 1: Error (mount.c:2406): mnt: Can't mount at ./HOME: No such file or directory 1: Error (mount.c:2555): mnt: Unable to statfs ./HOME: No such file or directory Error (cr-restore.c:1352): 30140 killed by signal 9 Error (cr-restore.c:2182): Restoring FAILED 

cgroups错误是:

  45: Error (cgroup.c:1152): cg: No set 1 found 1: Error (cr-restore.c:1350): 45 exited, status=1 Error (cr-restore.c:1352): 30140 killed by signal 9 Error (cr-restore.c:2182): Restoring FAILED 

我推测这是由于mountpoint-12.imgcgroup.img (使用暴击解码显示)引用了旧的容器ID。

 crit decode -i mountpoints-12.img --pretty | grep nsroot crit decode -i cgroup.img --pretty | grep docker 

显示旧的容器ID。

我遵循同样的暴击解码 – sedreplace – 暴击编码策略,我用skinet; 但并没有解决问题。 我validation了转换后的 mountpoints-12.img和cgroup.img引用了新的容器ID。 但恢复仍然失败,完全相同的错误。 就好像挂载点转换和cgroup转换没有任何影响。

我做什么具体是错误的? 我不得不说,这是我第一次通过Docker在Ubuntu 16.04 xenial映像上进行CRIU。 在过去,我已经做了基于高山的图像,并没有任何问题检查新的容器(而旧的运行)

主机系统是Ubuntu Xenial,默认的criu / crit是2.0-2ubuntu3。 我从xemul criu升级到最新的criu / crit, 将它撞到了2.4。 但是,我得到同样的错误。

我也testing了这个对阿尔卑斯山的容器。 它运作良好。 所以,也许在基于Ubuntu xenial的容器中有一些东西(检查点或者还原或者两者都是)

任何投入将受到欢迎。