<div dir="ltr">I just thought I&#39;d share a quick video of what I&#39;m using Criu + Docker for, in case anyone was interested, and to say thanks for all the help:<div><br></div><div><a href="https://www.youtube.com/watch?v=F2L6JLFuFWs">https://www.youtube.com/watch?v=F2L6JLFuFWs</a><br></div><div><br></div><div>When the document get executed, the code blocks are sent to a server, which spins up a new Docker container and then runs the code. In between each block, the running process is checkpointed (but left running). Every block also has its own checksum, so on subsequent runs, we can examine the checksums in order, and if we have a matching checkpoint we restore from that point in the document and resume executing the new code. </div><div><br></div><div>If we aren&#39;t resuming, we pull a container from a pool of running containers that are waiting for their first code block. When resuming, we can create a new container from the base image and restore directly into it without first needing to start it up. We even commit the docker filesystem each time if it has changed, so we choose the correct docker image to restore into.</div><div><br></div><div>All of the necessary changes in libcontainer are pending on the criu branch, and my branch for support in docker is available here:</div><div><br></div><div><a href="https://github.com/boucher/docker/tree/boucher-cr">https://github.com/boucher/docker/tree/boucher-cr</a><br></div><div><br></div><div>Thanks again for the help. I&#39;m looking forward to seeing criu support get merged into Docker.</div><div><br></div><div>-Ross </div><div><br></div><div><br></div></div>