有没有办法休眠Docker容器

时间:2017-07-17 21:20:37

标签: docker

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

3 个答案:

答案 0 :(得分:4)

看起来docker checkpoint可能是我试图在这里完成的事情。在描述它的文档中并没有多少。事实上,docker checkpoint的文档说"管理检查点"这是非常无益的。

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

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

答案 1 :(得分:3)

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

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

  

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

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

答案 2 :(得分:-1)

如果您只是停止容器,它会休眠:

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

我一直这样做,特别是对于包含网页浏览器的docker容器。