<div dir="ltr">Sure, that would work.  Will it then be the responsibility of the user to install it?<div><br></div><div>--Saied</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Sep 5, 2014 at 8:43 AM, Pavel Emelyanov <span dir="ltr">&lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 09/05/2014 07:00 PM, Saied Kazemi wrote:<br>
&gt; Hi Pavel,<br>
&gt;<br>
&gt; Thank you :)  You&#39;re right, this script will eventually go away but for now it makes life much much<br>
&gt; easier, reducing the command line arguments to at most one: the container ID.<br>
<br>
</span>Hm, OK. If you don&#39;t mind, I will relocate it to the contrib/ dir as Filipe suggested.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; So one would simply do:<br>
&gt;<br>
&gt; $ sudo docker_cr.sh -c<br>
&gt; $ sudo docker_cr.sh -r<br>
&gt;<br>
&gt; If the container ID is not specified on the command line, the script shows all containers and prompts the user to select the right one.  When entering the ID, only enough characters to uniquely identify the container is needed.  The -v flag can be optionally specified to enable verbose mode.<br>
&gt;<br>
&gt; Without this script, one would have to invoke criu as follows to checkpoint:<br>
&gt;<br>
&gt; $ sudo criu dump -o dump.log -v4 -t 17810 \<br>
&gt; -D /tmp/img/&lt;container_id&gt; \<br>
&gt; --root /var/lib/docker/aufs/mnt/&lt;container_id&gt; \<br>
&gt; --ext-mount-map /etc/resolv.conf:/etc/resolv.conf \<br>
&gt; --ext-mount-map /etc/hosts:/etc/hosts \<br>
&gt; --ext-mount-map /etc/hostname:/etc/hostname \<br>
&gt; --ext-mount-map /.dockerinit:/.dockerinit \<br>
&gt; --manage-cgroups \<br>
&gt; --evasive-devices<br>
&gt;<br>
&gt; And to restore, one would have to set up the filesystem first and then invoke criu as follows:<br>
&gt;<br>
&gt; $ sudo mount -t aufs -o br=\<br>
&gt; /var/lib/docker/aufs/diff/&lt;container_id&gt;:\<br>
&gt; /var/lib/docker/aufs/diff/&lt;container_id&gt;-init:\<br>
&gt; /var/lib/docker/aufs/diff/a9eb172552348a9a49180694790b33a1097f546456d041b6e82e4d7716ddb721:\<br>
&gt; /var/lib/docker/aufs/diff/120e218dd395ec314e7b6249f39d2853911b3d6def6ea164ae05722649f34b16:\<br>
&gt; /var/lib/docker/aufs/diff/42eed7f1bf2ac3f1610c5e616d2ab1ee9c7290234240388d6297bc0f32c34229:\<br>
&gt; /var/lib/docker/aufs/diff/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158:\<br>
&gt; none /var/lib/docker/aufs/mnt/&lt;container_id&gt;<br>
&gt;<br>
&gt; $ sudo criu restore -o restore.log -v4 -d<br>
&gt; -D /tmp/img/&lt;container_id&gt; \<br>
&gt; --root /var/lib/docker/aufs/mnt/&lt;container_id&gt; \<br>
&gt; --ext-mount-map /etc/resolv.conf:/var/lib/docker/containers/&lt;container_id&gt;/resolv.conf \<br>
&gt; --ext-mount-map /etc/hosts:/var/lib/docker/containers/&lt;container_id&gt;/hosts \<br>
&gt; --ext-mount-map /etc/hostname:/var/lib/docker/containers/&lt;container_id&gt;/hostname \<br>
&gt; --ext-mount-map /.dockerinit:/var/lib/docker/init/dockerinit-1.0.0 \<br>
&gt; --manage-cgroups \<br>
&gt; --evasive-devices<br>
&gt;<br>
&gt; So I suggest that this script be installed along with criu.<br>
&gt;<br>
&gt; If you agree, I can prepare additional material for the Docker HOWTO page to cover docker_cr.sh as well as AUFS and UnionFS support.<br>
&gt;<br>
&gt; Cheers!<br>
&gt;<br>
&gt; --Saied<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
</div></div><span class="im HOEnZb">&gt; On Fri, Sep 5, 2014 at 7:40 AM, Filipe Brandenburger &lt;<a href="mailto:filbranden@google.com">filbranden@google.com</a> &lt;mailto:<a href="mailto:filbranden@google.com">filbranden@google.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Hi Pavel,<br>
&gt;<br>
</span><div class="HOEnZb"><div class="h5">&gt;     On Fri, Sep 5, 2014 at 7:34 AM, Pavel Emelyanov &lt;<a href="mailto:xemul@parallels.com">xemul@parallels.com</a> &lt;mailto:<a href="mailto:xemul@parallels.com">xemul@parallels.com</a>&gt;&gt; wrote:<br>
&gt;     &gt; Guys, it&#39;s really great work you did with Docker! Do you think that this<br>
&gt;     &gt; script is better to be planted into criu sources? I thought that, since<br>
&gt;     &gt; we restore container detached from dockerd, some work will be done on the<br>
&gt;     &gt; Docker side, that that _it_ does all these preparations.<br>
&gt;<br>
&gt;     Yes, the intention is to integrate criu support into libcontainer next<br>
&gt;     (which should maybe solve the &quot;detached after restore&quot; issue) and then<br>
&gt;     finally add hooks to docker (so that you can use &quot;docker dump&quot; and<br>
&gt;     &quot;docker restore&quot;). At that point, we can probably obsolete this<br>
&gt;     script.<br>
&gt;<br>
&gt;     But while we worked on that, we can share this script that we have<br>
&gt;     been using to test it internally, so that we can make it easier for<br>
&gt;     others to try it as well :-)<br>
&gt;<br>
&gt;     If you think scripts/ is not the best location for this script, maybe<br>
&gt;     contrib/ would be good?<br>
&gt;<br>
&gt;     Cheers,<br>
&gt;     Filipe<br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br></div>