有没有办法hibernatedocker集装箱

我喜欢使用Jupyter Notebook。 如果我在虚拟机的虚拟机中运行它,我可以保存虚拟机的状态,然后在第二天离开的地方继续。 如果我在docker集装箱中运行它,我可以做类似的事吗? 即转储容器的“状态”到磁盘,然后启动并重新加载“状态”?

我能看到的最接近的方法是docker pause <container-id>

https://docs.docker.com/engine/reference/commandline/pause/

docker pause命令暂停指定容器中的所有进程。 在Linux上,这使用cgroups冷冻机。 传统上,当暂停进程时,使用SIGSTOP信号,这是暂停进程可以观察到的。 cgroups冷冻机的过程是不知道的,无法捕捉,它被暂停,并随后恢复。

考虑到与VirtualBoxhibernate的重要区别,容器化进程的内存状态没有磁盘持久性。

它看起来像docker checkpoint可能是我在这里试图完成的事情。 文档中没有太多的描述。 实际上, docker checkpoint的文档中docker checkpoint “pipe理检查点”,这是无用的。

更新:事实上,这是什么docker检查点应该完成。 当我检查点我的jupyter笔记本容器,它保存它,我可以启动它与docker start --checkpoint [my_checkpoint] jupyter_notebook ,它显示了我已经运行在Running状态的东西。 但是,尝试使用Running笔记本失败。 我不确定这是一个CRIU问题还是一个Jupyter问题,但是我会在适当的git问题跟踪器中提出。

Docker的docker checkpoint是应该提供VM-save-state / hibernate样式的function。

如果你只是停止容器,它冬眠:

 docker stop myjupyter (hours pass) docker start myjupyter docker attach myjupyter 

我一直这样做,尤其是在Docker容器里面有Web浏览器的时候。