Checkpoint and restore Docker containers with CRIU
blog.circleci.com
blog.circleci.com
https://twit.tv/show/floss-weekly/334
http://www.youtube.com/watch?v=w5ftqjOrpfA
Some of this stuff is crazy. Moving processes is cool, but faking TCP/IP state between containers to basically transfer a TCP/IP stream from one machine to the other with client service devices noticing? INSANE.
I am a Linux enthusiast and very novice *nix sysadmin. It is worth the listen, even if you are not way into containerization, because what they have accomplished is impressive.
Bolting checkpointing on top of a monolithic Unix is harder, though doable. DragonFly BSD has had a rather elegant and simple mechanism called sys_checkpoint(2) since 2003, but is still limited to single-threaded programs.
Indeed. In the interview this comes up, as they wanted their patches mainlined into Linux development and Linus, and unusually so given the joking about his outbursts, said they were insane or going for the impossible and passed.
Currently, networking is broken in this PR.
Although it's implemented at the libcontainer level, the method used no longer works since the introduction of libnetwork.
There are likely several networking related issues to work out, like:
- ensuring IPs are reserved across daemon restarts
- ensuring port maps are reserved
- deciding how to deal with network resources in the "new container" model
I also would like to share something I did for the Docker global hackday: https://github.com/marcosnils/cmt.
The original motivation for checkpointing, IIRC, was not to lose the state of really long (days, weeks...) computations. But it goes much further.
Thx!.