Can I suspend and then resume a Docker container?

Solution 1:

As of Version 0.12.0, Docker supports PAUSE and UNPAUSE commands to pause and resume containers using cgroup freezer.

Solution 2:

AFAIK right now it can't be done with pure docker but lxc supports that. I've play around little bit with docker and confirmed that this can be done with lxc-freeze -n <containtr.id> and to resume operations lxc-unfreeze -n <container.id> But in v0.2.0 docker ps gives you only shorten containter id even with -notrunc and lxc-ls output is empty on my system (strange, need to read more about it, as docker uses plain lxc-start with params so lxc-ps should print this). I found full container id with lxc-ps. It would be nice to add docker freeze command. Maybe it's time for me to learn some go :)

Solution 3:

The commands:

$ docker pause <containerName>
$ docker unpause <containerName>

Here's a demo of them in action:

enter image description here

Solution 4:

Here's a recent deck on the recent experimental integration of Checkpoint/Restore In Userspace (CRIU) + Docker.

Solution 5:

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