]> git.ipfire.org Git - thirdparty/lxc.git/commit
Add lxc-copy executable
authorChristian Brauner <christianvanbrauner@gmail.com>
Fri, 6 Nov 2015 10:59:59 +0000 (11:59 +0100)
committerStéphane Graber <stgraber@ubuntu.com>
Tue, 17 Nov 2015 16:32:07 +0000 (11:32 -0500)
commit43cea62db9ecfa83d4a2e5ffb27184909f5ec244
tree90b954599cc8c337a3a2ce623cac1b0e40e0c4a6
parent058b94fe0e3c6254c98911bfedb5695c825a8be2
Add lxc-copy executable

This is a complete reimplementation of lxc-clone and lxc-start-ephemeral.
lxc-copy merges the functionalities of lxc-clone + lxc-start-ephemeral.

(1) Cloning containers:

(a) as copy:

lxc-copy -n aa -N bb

(b) as snapshot:

lxc-copy -n aa -N bb -s

(2) Renaming containers:

lxc-copy -n aa -N bb -R

(3) Starting ephemeral containers:

Ephemeral containers are created and started by passing the flag -e /
--ephemeral. Whenever this flag is missing a copy of the container is created.
The flag -e / --ephemeral implies -s / --snapshot.

(a) start ephemeral container daemonized with random name:

lxc-copy -n aa -e

(b) start ephemeral container in foreground mode with random name:

lxc-copy -n aa -e -F

(c) start ephemeral container with specified name in daemonized mode:
    Analogous to lxc-start ephemeral containers start in daemonized
            mode per default:

lxc-copy -n aa -N bb -e

    One can however also explicitly pass -d / --daemon:

lxc-copy -n aa -N bb -e -d

    but both commands are equivalent.

(d) start non-ephemeral container in daemonized mode:

lxc-copy -n aa -D -e

(e) start ephemeral container in daemonized mode and keep the original
    hostname:

lxc-copy -n aa -K -e

(f) start ephemeral container in daemonized mode and keep the
    MAC-address of the original container:

lxc-copy -n aa -M -e

(g) start ephemeral container with custom mounts (additional mounts can
            be of type {bind,aufs,overlay}) in daemonized mode:

lxc-copy -n aa -e -m bind=/src:/dest:ro,aufs=/src:/dest,overlay=/src:/dest

(4) Other options:

lxc-copy --help

In order to create a random containername and random upper- and workdirs for
custom mounts we use mkdtemp() to not just create the names but also directly
create the corresponding directories. This will be safer and make the code
considerably shorter.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/lxc/Makefile.am
src/lxc/arguments.h
src/lxc/lxc_copy.c [new file with mode: 0644]