我想暂停一个 Docker 容器并稍后恢复。如何才能做到这一点?通过暂停,我的意思是它应该保存正在进行的进程的状态(例如视频编码),然后随时恢复它。
5 回答
从0.12.0 版本开始,Docker 支持使用 cgroup freezer 暂停PAUSE
和UNPAUSE
恢复容器的命令。
AFAIK 现在不能用纯 docker 完成,但 lxc 支持。我已经与 docker 玩了一点,并确认这可以通过
lxc-freeze -n <containtr.id>
并恢复操作
来完成lxc-unfreeze -n <container.id>
但在 v0.2.0 中,即使使用 -notrunc 和 lxc-ls 输出在我的系统上为空,docker ps 也只会缩短容器 ID(奇怪,需要阅读更多关于它的信息,因为 docker 使用普通的 lxc-start 和参数,所以 lxc-ps 应该打印这个)。我找到了完整的容器 id lxc-ps
。添加 docker freeze 命令会很好。也许是时候让我学习一些围棋了:)
Docker has just released an (as yet) undocumented volumes and data storage feature set. tl;dr if you use the -v
commandline option you can specify a path to map outside of the container to a special docker path (/var/lib/docker/volumes/{FULL_ID}
) where FULL_ID can be found by docker inspect container_id
. An example is docker run -d -v /data danielvf/myapp:1.0 runapp
which would externalize the /data
directory into a docker volume.
https://github.com/dotcloud/docker/issues/111
Roadmap for this feature: (doesn't yet document it's existence): https://github.com/dotcloud/docker/wiki/Volumes-&-persistent-data-storage