Commit Graph

3491 Commits

Author SHA1 Message Date
Stéphane Graber
a2b27d2f85 Merge pull request #646 from brauner/manpages_new
Adapt manpage for lxc-snapshot
2015-08-28 13:36:19 -04:00
Christian Brauner
dedd4f6771 Adapt manpage for lxc-snapshot
Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
2015-08-28 18:57:49 +02:00
Stéphane Graber
c804bedf8b Merge pull request #585 from ptoomey3/lxc-execute-as-user
Add support for specified UID/GID for lxc-execute in a private user namespace
2015-08-28 11:23:13 -04:00
Stéphane Graber
f7512464e5 Merge pull request #643 from raspberrypython/issue-616
Test dpkg for multiarch support in lxc-debian template
2015-08-28 11:22:10 -04:00
David Noyes
92824ee04f Alternative test for dpkg multiarch support in lxc-debian template
Signed-off-by: David Noyes <david.j.noyes@gmail.com>
2015-08-28 14:44:25 +00:00
Patrick Toomey
68d18db8d8 Add support for get_config_item and set_config_item
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:33 -06:00
Patrick Toomey
62d0053955 Update docs to reflect lxc.init_uid and lxc.init_gid options
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:30 -06:00
Patrick Toomey
dbca9237db Update english docs for new lxc.init_uid and lxc.init_gid options
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:23 -06:00
Patrick Toomey
72bb04e4b8 Add support for setting lxc-execute init UID/GID via configuration file
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:19 -06:00
Patrick Toomey
fd9f399bac Clarify struct field comment
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:15 -06:00
Patrick Toomey
c5cd20ce8e Pass UID/GID explicitly through flags
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:11 -06:00
Patrick Toomey
56f8ff00e3 Set UID/GID to parent value for lxc-execute
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:25:07 -06:00
Patrick Toomey
e06155c9ab Do not switch to root for lxc-execute
Signed-off-by: Patrick Toomey <ptoomey3@biasedcoin.com>
2015-08-28 08:24:11 -06:00
David Ward
7b6753e710 Fix verification of start hook without a rootfs
Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:37:20 -05:00
David Ward
0f4cdd7781 When creating container, save configuration if rootfs already exists
Commit 6c6892b "fix multithreaded create()" prevented the container
configuration from being saved if the backing store does not need
to be created.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:37:15 -05:00
David Ward
01958b1fe0 Only mount /proc if needed, even without a rootfs
Use the same code with and without a rootfs to check if mounting
/proc is necessary before doing so. If mounting it is unsuccessful
and there is no rootfs, continue as before.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:37:11 -05:00
David Ward
14221cbb7d Allow autodev without a rootfs
A container without a rootfs is useful for running a collection of
processes in separate namespaces (to provide separate networking as
an example), while sharing the host filesystem (except for specific
paths that are re-mounted as needed). For multiple processes to run
automatically when such a container is started, it can be launched
using lxc-start, and a separate instance of systemd can manage just
the processes inside the container. (This assumes that the path to
the systemd unit files is re-mounted and only contains the services
that should run inside the container.) For this use case, autodev
should be permitted for a container that does not have a rootfs.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:37:05 -05:00
David Ward
cd2b3cfe37 Fix /dev symlinks without a rootfs
Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:36:58 -05:00
David Ward
00370edd53 Fix container creation without a rootfs
It is not an error to create a container without a template or rootfs.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:36:54 -05:00
David Ward
8ede5f4c9d Fix automatic mounts without a rootfs
Signed-off-by: David Ward <david.ward@ll.mit.edu>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 16:36:50 -05:00
Stéphane Graber
0ab45a162e Merge pull request #617 from alkino/master
A little bit of refactor and doc
2015-08-27 16:58:06 -04:00
Stéphane Graber
d4b36defec Merge pull request #631 from alkino/doc
Add long option for -P in documentation
2015-08-27 16:34:00 -04:00
Stéphane Graber
a31c061cd3 Merge pull request #634 from alkino/config_mount
Split handle of lxc.mount* with 3 functions
2015-08-27 16:33:38 -04:00
Stéphane Graber
66b62e24ec Merge pull request #638 from schiele/master
check for NULL pointers before calling setenv()
2015-08-27 16:22:14 -04:00
Natanael Copa
e54864d363 Clone bridge interface MTU setting
Instead of require static mtu setting in config we simply clone the
existing MTU setting of the bridge interface.

This fixes issue when bridge interface has bigger MTU (like 9000 for
jumbo frame support) than the default 1500. When veth interface is
created it has by default MTU set to 1500 and when this is added to the
bridge, the kernel wee reduce the MTU for the bridge to 1500. We solve
this by cloning the MTU value from bridge interface.

This simplifies managing containers with bridge interface who supports
jumbo frames (mtu 9000) and makes it easier to move containers between
hosts with different MTU settings.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-08-27 16:15:14 -04:00
Serge Hallyn
c01859e8ac fix open() results check to include 0
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:14:28 -05:00
Christian Brauner
19712e0473 Destroy container with snapshots & clone-snapshots
- This enables lxc-destroy to destroy a container with all its snapshots
  including clone-snapshots not located in the snaps/ folder.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:14:24 -05:00
Christian Brauner
0ea055b395 mod_rdep(): Write path and name of clone to file
If we currently create clone-snapshots via lxc-clone only the plain total
number of the containers it serves as a base-container is written to the file
"lxc-snapshots". This commit modifies mod_rdep() so it will store the paths and
names to the containers that are clone-snapshots (similar to the "lxc_rdepends"
file for the clones). **Users which still have containers that have a non-empty
(with a number > 0 as an entry) "lxc-snapshots" file in the old format are not
affected by this change. It will be used until all old clones have been
deleted!** For all others, the "lxc_snapshots" file placed under the original
container now looks like this:

      /var/lib/lxc
      bb
      /var/lib/lxc
      cc
      /opt
      dd

This is an example of a container that provides the base for three
clone-snapshots bb, cc, and dd. Where bb and cc both are placed in the usual
path for privileged containers and dd is placed in a custom path.

- Add additional argument to function that takes in the clone-snapshotted
  lxc_container.
- Have mod_rdep() write the path and name of the clone-snapshotted container the
  file lxc_snapshots of the original container.
- If a clone-snapshot gets deleted the corresponding line in the file
  lxc_snapshot of the original container will be deleted and the file updated
  via mmap() + memmove() + munmap().
- Adapt has_fs_snapshots().
- **If an lxc-snapshot file in the old format is found we'll keep using it.**

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:14:18 -05:00
Christian Brauner
5e8757eda5 Fix grammar in some of the executables
"NAME for name of the container" becomes "NAME of the container"

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:14:13 -05:00
Christian Brauner
3d7ad474b0 Make LXC_CLONE_KEEPNAME work
- Passing the LXC_CLONE_KEEPNAME flag to do_lxcapi_clone() was not respected and
  let to unexpected behaviour for e.g. lxc-clone. We wrap
  clear_unexp_config_line() and set_config_item_line() in an appropriate
  if-condition.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:14:08 -05:00
Christian Brauner
f29bb5d52b lxc-destroy: Remove container with all snapshots
- This enables the user to destroy a container with all its snapshots without
  having to use lxc-snapshot first to destroy all snapshots. (The enum values
  DESTROY and SNAP from the previous commit are reused here again.)
- Some unification regarding the usage of exit() and return has been done.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:14:01 -05:00
Christian Brauner
513f23df5c Refactor lxc-snapshot
- lxc_snapshot.c lacked necessary members in the associated lxc_arguments struct
  in arguments.h. This commit extends the lxc_arguments struct to include
  several parameters used by lxc-snapshot which allows a rewrite that is more
  consistent with the rest of the lxc-* executables.
- All tests have been moved beyond the call to lxc_log_init() to allow for the
  messages to be printed or saved.
- Some small changes to the my_args struct. (The enum task is set to SNAP (for
  snapshot) per default and variables illustrating the usage of the command line
  flags are written in all caps.)
- arguments.h has been extended to accommodate a future rewrite of lxc-clone
- Traditional behaviour of the executable has been retained in this commit.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:13:46 -05:00
KATOH Yasufumi
2d8632d5b7 doc: Update lxc.cgroup.use in lxc.system.conf(5)
LXC now uses lxc.cgroup.use even when cgmanager is used.
So remove the description for the case of using cgmanager.
And add the case of not specifying it.
This commit only updates en and ja man pages.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-08-27 16:10:36 -04:00
Antonio Terceiro
c2a85d043b lxc-debian: allow not including contrib/non-free
Signed-off-by: Antonio Terceiro <terceiro@debian.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:43:50 -04:00
Antonio Terceiro
6a082d5a13 lxc-debian: support stretch (Debian 9) images
Signed-off-by: Antonio Terceiro <terceiro@debian.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:43:35 -04:00
Stéphane Graber
d2111444dd init: Support older apparmor
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-08-27 15:35:01 -04:00
David Noyes
28e58a6a4f Test dpkg for multiarch support in lxc-debian template
Signed-off-by: David Noyes <david.j.noyes@gmail.com>
2015-08-26 15:23:31 +00:00
Robert Schiele
ab7efcf51d check for NULL pointers before calling setenv()
Latest glibc release actually honours calling setenv with a NULL
pointer by causing SIGSEGV but checking pointers before submitting
to any system function is a good idea anyway.

Signed-off-by: Robert Schiele <rschiele@gmail.com>
2015-08-21 12:41:50 +02:00
Nicolas Cornu
70f55bfd4f Split handle of lxc.mount* with 3 functions
Signed-off-by: Nicolas Cornu <nicolac76@yahoo.fr>
2015-08-16 00:54:24 +02:00
Tycho Andersen
5b4543292d c/r: enable tracefs
tracefs is a new filesystem that can be mounted by users. Only the options
and fs name need to be passed to restore the state, so we can use criu's
auto fs feature.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-08-14 12:29:24 -04:00
Serge Hallyn
a4567cd127 Merge pull request #632 from lxc/revert-621-arguments
Revert "Refactor lxc-snapshot, lxc-clone, make LXC_CLONE_KEEPNAME wor…
2015-08-14 11:01:56 -05:00
Serge Hallyn
965ef7f460 Revert "Refactor lxc-snapshot, lxc-clone, make LXC_CLONE_KEEPNAME work and add option to destroy container with all snapshots to lxc-destroy" 2015-08-14 10:59:19 -05:00
Nicolas Cornu
db4aba3874 Refactor and factorize mount entries
Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
2015-08-14 17:59:09 +02:00
Nicolas Cornu
f5b67b36e2 Add doc for optional, create=dir and create=file in lxc.container.conf man
Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
2015-08-14 17:59:09 +02:00
Nicolas Cornu
4d5b72a186 Factorize handle of create=dir and create=file
Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
2015-08-14 17:59:09 +02:00
Nicolas Cornu
3519a99c82 Add long option for -P in documentation
Signed-off-by: Nicolas Cornu <ncornu@aldebaran.com>
2015-08-14 17:57:53 +02:00
Serge Hallyn
f69d74e359 Merge pull request #621 from brauner/arguments
Refactor lxc-snapshot, lxc-clone, make LXC_CLONE_KEEPNAME work and add option to destroy container with all snapshots to lxc-destroy
2015-08-13 19:36:16 -05:00
Stéphane Graber
3cd058176c Merge pull request #596 from lazy404/master
Only use LOGPATH if lxcpath is unset or default
2015-08-13 17:00:19 -04:00
Michal Grzedzicki
479bba8b31 Only use LOGPATH if lxcpath is unset or default
Signed-off-by: Michał Grzędzicki <lazy404@gmail.com>
2015-08-13 22:53:33 +02:00
Stéphane Graber
61f619ba9b Merge pull request #628 from rldleblanc/cap_clone_fix
Caps are getting lost when cloning an LXC.
2015-08-13 16:38:07 -04:00