[lxc-devel] Container autostart proposal

Dwight Engen dwight.engen at oracle.com
Tue May 28 15:20:21 UTC 2013


On Mon, 27 May 2013 15:07:03 -0400
Stéphane Graber <stgraber at ubuntu.com> wrote:

> Hello,
> 
> One feature that distros have been hacking together on their side for
> a while is container autostart.
> 
> For 1.0 I'd like us to agree on an upstream implementation of this so
> distros no longer need to carry patches in lxc-destroy/lxc-list/... to
> properly list/remove the autostart flag.
> 
> The current implementation in Ubuntu (and I believe in Debian too) is
> a /etc/lxc/auto/ directory which contains a bunch of symlinks to
> containers to auto-start. The symlinks may point to either the config
> directory or the config file.
> 
> This has been working pretty well with only one known caveat being
> that LXC_CONFIG_FILE as exposed to the hooks will
> be /etc/lxc/auto/<some
> name>.conf which means that doing a basename on it won't return the
> config directory, which has been a problem with some hooks in the
> past. The use of readlink on top of basename can workaround that
> problem.
> 
> Another problem with this implementation is that the autostart flag is
> lost when migrating the container to another host. One needs to
> manually remove the symlinks on the source and recreate it on the
> destination.
> 
> 
> So I therefore have two proposals on how to implement this, let me
> know what you prefer:
> 1)
>  - Keep things as they are in Ubuntu and make that the official way of
> auto-starting containers. Documentating /etc/lxc/auto as the location
> in which people need to place their symlinks.
>  - Update our tools to properly list and destroy those auto-started
> containers.
>  - Extend lxc-start and lxc-stop to allow starting all auto containers
> and stopping all known containers (-a flag would be my suggestion).
> 
> 2)
>  - Quite a bit more complex but more flexible.
>  - Introduce a new lxc.autostart system config option (lxc.conf).
>    This is a boolean turning autostart on/off on a system level.
>  - Introduce a few more container options:
>    + lxc.start.auto => boolean
>    + lxc.start.priority => integer, highest wins

I think instead of priority (high -> low), something like sequence (low
-> high) might be more natural (count up instead of down). It is also
more similar to old rc init scripts.

>    + lxc.start.time => integer, time in seconds
>  - Extend lxc-start and lxc-stop to allow starting all auto containers
> and stopping all known containers (-a flag would be my suggestion).
>  - In this mode, lxc-start would sort the containers by priority, then
> start the first one, wait up to lxc.start.time for it to be RUNNING,
> then start the next one, etc...
>  - The defaults would be lxc.start.auto=false, lxc.start.priority=0,
> lxc.start.time=0.
>  - It'd be assumed that only containers in lxc.lxcpath can be
> autostarted.
>  - This design would also work for unprivileged containers where
> lxc.lxcpath points to the user's home directory, in such case, the
> distros will need to have something call "lxc-start -a" on session
> open and "lxc-stop -a" on session close (or whenever they want).
> 
> 
> While 1) is clearly a lot less pain and much easier for the distros
> already supporting autostart to migrate to, I think there's a pretty
> big benefit in getting 2) as it's more flexible, allows for delayed
> start and supports unprivileged containers.

Yeah I think 2 is much better, more flexible. I like that it keeps a
containers config all in one place which should make migration much
easier.

> Thoughts?
> 
> 





More information about the lxc-devel mailing list