[CRIU] Docker HOWTO
Saied Kazemi
saied at google.com
Fri Sep 12 13:33:14 PDT 2014
Thanks. New material on docker_cr.sh added. Please visit
http://criu.org/Docker.
--Saied
On Fri, Sep 12, 2014 at 11:48 AM, Pavel Emelyanov <xemul at parallels.com>
wrote:
> On 09/12/2014 08:47 PM, Saied Kazemi wrote:
> > I just requested an account so that I'd have edit permission.
> > As soon as it's set up, I'll add it to the Docker HOWTO page.
>
> Account confirmed :) Thanks
>
> > --Saied
> >
> >
> >
> > On Fri, Sep 12, 2014 at 12:59 AM, Pavel Emelyanov <xemul at parallels.com
> <mailto:xemul at parallels.com>> wrote:
> >
> > On 09/11/2014 10:11 PM, Saied Kazemi wrote:
> > > Great! Here is some additional text for the HOWTO page that
> introduces
> > > docker_cr.sh and explains its usage.
> >
> > It's very useful, thanks :) Can you integrate this text into
> > the http://criu.org/Docker page?
> >
> > > --Saied
> > >
> > >
> > > Helper Script
> > >
> > > As seen in the above examples, the CRIU command line for
> checkpointing and
> > > restoring a Docker container is pretty long. For restore, there
> is also
> > > an additional step to set up the root filesystem before invoking
> CRIU.
> > >
> > > To automate the C/R process, there is a helper script in the
> contrib
> > > subdirectory of CRIU sources, called docker_cr.sh. In addition to
> > > invoking CRIU, this helper script sets up the root filesystem for
> AUFS,
> > > UnionFS, and VFS for restore.
> > >
> > > With docker_cr.sh, all you have to provide is the container ID.
> > > If you don't specify a container ID, docker_cr.sh will list all
> running
> > > containers and prompt you to choose one. Also, as shown in the
> help
> > > output below, by setting the appropriate environment variable, it's
> > > possible to tell docker_cr.sh which Docker and CRIU binaries to
> use,
> > > where Docker's home directory is, and where CRIU should save and
> look
> > > for its image files.
> > >
> > > # docker_cr.sh --help
> > > Usage:
> > > docker_cr.sh -c|-r [-hv] [<container_id>]
> > > -c, --checkpointcheckpoint container
> > > -h, --helpprint help message
> > > -r, --restorerestore container
> > > -v, --verboseenable verbose mode
> > >
> > > Environment:
> > > DOCKER_HOME(default /var/lib/docker)
> > > CRIU_IMG_DIR(default /var/lib/docker/criu_img)
> > > DOCKER_BINARY(default docker)
> > > CRIU_BINARY(default criu)
> > >
> > > Below is an example to checkpoint and restore Docker container
> 4397:
> > >
> > > # docker_cr.sh -c 4397
> > > dump successful
> > > # docker_cr.sh -r 4397
> > > restore successful
> > >
> > > Optionally, you can specify -v to see the commands that
> docker_cr.sh
> > > executes. For example:
> > >
> > > # docker_cr.sh -c -v 40d3
> > > docker binary: docker
> > > criu binary: criu
> > > image directory:
> /var/lib/docker/criu_img/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > > container root directory:
> /var/lib/docker/aufs/mnt/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > >
> > > criu dump -v4 -D
> /var/lib/docker/criu_img/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> -o dump.log --manage-cgroups --evasive-devices --ext-mount-map
> /etc/resolv.conf:/etc/resolv.conf --ext-mount-map /etc/hosts:/etc/hosts
> --ext-mount-map /etc/hostname:/etc/hostname --ext-mount-map
> /.dockerinit:/.dockerinit -t 5991 --root
> /var/lib/docker/aufs/mnt/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > >
> > > dump successful
> > > (00.020827) Dumping finished successfully
> > >
> > > # docker_cr.sh -r -v 40d3
> > > docker binary: docker
> > > criu binary: criu
> > > image directory:
> /var/lib/docker/criu_img/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > > container root directory:
> /var/lib/docker/aufs/mnt/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > >
> > > mount -t aufs -o
> > >
> /var/lib/docker/aufs/diff/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > >
> /var/lib/docker/aufs/diff/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf-init
> > >
> /var/lib/docker/aufs/diff/a9eb172552348a9a49180694790b33a1097f546456d041b6e82e4d7716ddb721
> > >
> /var/lib/docker/aufs/diff/120e218dd395ec314e7b6249f39d2853911b3d6def6ea164ae05722649f34b16
> > >
> /var/lib/docker/aufs/diff/42eed7f1bf2ac3f1610c5e616d2ab1ee9c7290234240388d6297bc0f32c34229
> > >
> /var/lib/docker/aufs/diff/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158
> > > none
> > >
> /var/lib/docker/aufs/mnt/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> > >
> > > criu restore -v4 -D
> /var/lib/docker/criu_img/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> -o restore.log --manage-cgroups --evasive-devices --ext-mount-map
> /etc/resolv.conf:/var/lib/docker/containers/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf/resolv.conf
> --ext-mount-map
> /etc/hosts:/var/lib/docker/containers/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf/hosts
> --ext-mount-map
> /etc/hostname:/var/lib/docker/containers/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf/hostname
> --ext-mount-map /.dockerinit:/var/lib/docker/init/dockerinit-1.0.0 -d
> --root
> /var/lib/docker/aufs/mnt/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf
> --pidfile
> /var/lib/docker/criu_img/40d363f564e00a2f893579fa012a200e475dcf8df47f2a22b7dd0860ffc3d7bf/restore.pid
> > >
> > > restore successful
> > > (00.408807) Restore finished successfully. Resuming tasks.
> > >
> > > root 6206 1 1 10:49 ? 00:00:00 /bin/sh -c i=0;
> while true; do echo $i >> /foo; i=$(expr $i + 1); sleep 3; done
> > >
> > >
> > >
> > > On Tue, Sep 9, 2014 at 5:10 AM, Pavel Emelyanov <
> xemul at parallels.com <mailto:xemul at parallels.com> <mailto:
> xemul at parallels.com <mailto:xemul at parallels.com>>> wrote:
> > >
> > > On 09/03/2014 11:28 PM, Filipe Brandenburger wrote:
> > > > Acked-by: Filipe Brandenburger <filbranden at google.com
> <mailto:filbranden at google.com> <mailto:filbranden at google.com <mailto:
> filbranden at google.com>>>
> > > >
> > > > On Wed, Sep 3, 2014 at 12:27 PM, Saied Kazemi <
> saied at google.com <mailto:saied at google.com> <mailto:saied at google.com
> <mailto:saied at google.com>>> wrote:
> > > >> As promised, here is a shell script to simplify
> checkpointing and restoring
> > > >> a Docker container. The usage is pretty simple and
> obvious. Try
> > > >> docker_cr.sh --help to get started. I suggest adding this
> file to the
> > > >> scripts subdirectory of CRIU and installing it where criu
> is installed, but
> > > >> I have not modified the Makefile.
> > > >>
> > > >> I'd like to acknowledge Filipe's time for his review and
> feedback.
> > > >>
> > > >> Cheers!
> > >
> > > Sorry for the delay. The patch is applied with the scripts/ ->
> contrib/
> > > directory change. Huge thanks!
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > CRIU mailing list
> > > CRIU at openvz.org <mailto:CRIU at openvz.org>
> > > https://lists.openvz.org/mailman/listinfo/criu
> > >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvz.org/pipermail/criu/attachments/20140912/35894ba2/attachment-0001.html>
More information about the CRIU
mailing list