2017-07-17 82 views
4

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

回答

3

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

更新:事实上,这是码头检查点应该完成的。当我检查我的jupyter笔记本容器时,它会保存它,我可以用docker start --checkpoint [my_checkpoint] jupyter_notebook来启动备份,并且它显示我运行的状态为Running状态。但是,尝试使用Running笔记本电脑失败。我不确定这是一个CRIU问题还是一个Jupyter问题,但我会在适当的git问题跟踪器中提出。

Anyhoo docker checkpoint是应该提供VM-save-state/hibernate样式功能的东西。 “

0

如果你只是停止容器,进入休眠状态:

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

我做这一切的时候,尤其是与在他们网络浏览器的泊坞窗容器。

+2

”容器内的主要进程将收到SIGTERM,并在宽限期后,SIGKILL“ - https://docs.docker.com/engine/reference/commandline/stop/ 这听起来不像我在找什么...... – Scott

+0

Jupyter定期自动保存你的工作环境,所以这个工作,我一直这样做。你说得对,它可能不适用于其他程序。 – FuzzyChef

+0

但是如果我有一个需要2天计算的变量,当我再次启动我的容器时,我将不得不重新计算它。目标不是保存我输入的内容,而是保存计算机完成的工作。 – Scott

3

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

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

的码头工人暂停命令暂停在指定的容器中的所有进程。在Linux上,这使用cgroups冷冻机。传统上,在暂停进程时,会使用SIGSTOP信号,这可以通过暂停进程来观察。对于cgroups冷冻机,该过程不知道,无法捕获,它正在暂停,随后又恢复。

考虑到作为对VirtualBox的冬眠一个重要的区别,有集装箱进程的内存状态没有磁盘持久性。