Commit 43cea62d by Christian Brauner Committed by Stéphane Graber

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: 's avatarChristian Brauner <christianvanbrauner@gmail.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 058b94fe
......@@ -183,6 +183,7 @@ bin_PROGRAMS = \
lxc-cgroup \
lxc-checkpoint \
lxc-clone \
lxc-copy \
lxc-config \
lxc-console \
lxc-create \
......@@ -226,6 +227,7 @@ init_lxc_SOURCES = lxc_init.c
lxc_monitor_SOURCES = lxc_monitor.c
lxc_monitord_SOURCES = lxc_monitord.c
lxc_clone_SOURCES = lxc_clone.c
lxc_copy_SOURCES = lxc_copy.c
lxc_start_SOURCES = lxc_start.c
lxc_stop_SOURCES = lxc_stop.c
lxc_top_SOURCES = lxc_top.c
......
......@@ -100,6 +100,7 @@ struct lxc_arguments {
/* lxc-snapshot and lxc-clone */
enum task {
CLONE,
DESTROY,
LIST,
RESTORE,
......@@ -111,6 +112,7 @@ struct lxc_arguments {
char *newname;
char *newpath;
char *snapname;
int keepdata;
int keepname;
int keepmac;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment