[Lxc-users] Ubuntu template questions

Serge Hallyn serge.hallyn at canonical.com
Tue Mar 13 19:02:34 UTC 2012

Quoting Papp Tamas (tompos at martos.bme.hu):
> hi All,
> I always created an own template with debootstrap and I used it.
> Now I tried lxc-create -t ubuntu and I still have some question and 
> suggestion:

Thanks, Papp.

> 1. I suggest ntpdate not to be installed (remove after debootstrap). 
> Also I think 'update-rc.d -f ondemand remove' would be fine in the 
> container. Actually I see this somewhere in the script, but I had to do 
> it manually.

Hm, perhaps /etc/network/if-up.d/ntpdate should be updated to not run
in a container.

It also might be worth removing CAP_SYS_TIME from the container's

> 2. It would be nice, if a postinstall script can be called automatically

You mean to run after the container has been created?  That'd be a nice
features, yes.  Stéphane has also suggested pre- and post-start scripts
for container start/stop.

> 3. I think rootfs.hold file should be documented better, for example 
> with a text message in it.

I have no objection to that.

> 4. I always wanted to ask, why lxc-create command has a switch '-n' if 
> it defined in the configuration anyway?

Hmm?  I never put the hostname in my configuration manually.

> 5. There are a number of custom devices, which I think by default should 
> not be there. For example tun and others. Or are they necessary? Is this 
> just a kind of failsafe solution for the beginning/beginners which needs 
> to be tuned?

Well, these templates are used by people doing juju, openstack, and
launchpad/buildd stuff.  Yes we've never really discussed how we should
go about deciding good defaults.  We probably should.

> 6. How can I deploy it to a custom directory? With the switch '-B' I was 
> not successful. Anyway, many times I just want to create a container 
> with no individual partition (volume). Now I copied it from /var/lib/lxc.

Not sure what you mean.  -B only really supports lvm right now.  It should
be made to support loopback qemu-nbd images.

In the lxc server guide (a rough draft is at
with a rougher but pdf draft at
I strongly recommend against picking custom locations.  Rather, if you
need more space, symlink or bind-mount in another filesystem to
/var/lib/lxc and /var/cache/lxc.

> 7. Why does lxc-destroy remove the container files without asking about 
> it? I think is a bad idea.

<shrug>  it's what it's always done.  I personally like it - I prefer
limiting interaction.  We could add a --del-rootfs option, without which
it only deletes the config, but I don't really see the point.

> 8. The script creates some custom upstart config file:
> lxc.conf: Why don't use lxcguest package?

lxc.conf is installed with lxc, to be installed on the host.  It's what
starts your /etc/lxc/auto/ containers.

> ssh.conf: why is this necessary?
> console.conf: It should be in the package upstart as tty[0-6].conf or in 
> lxcguest package, isn't it?

Here you need to be specific about what containers you created, with what
options.  If you're creating a precise container on precise host, ssh.conf
won't exist and console.conf is shipped by upstart, just as you say.

> 9. The script just removes config files instead of using dpkg-divert:
> rm -f $rootfs/etc/init/tty{5,6}.conf
> chroot $rootfs /bin/bash -c 'cd /etc/init; for f in $(ls u*.conf); do mv 
> $f $f.orig; done'
> chroot $rootfs /bin/bash -c 'cd /etc/init; for f in $(ls tty[2-9].conf); 
> do mv $f $f.orig; done'
> chroot $rootfs /bin/bash -c 'cd /etc/init; for f in $(ls 
> plymouth*.conf); do mv $f $f.orig; done'
> chroot $rootfs /bin/bash -c 'cd /etc/init; for f in $(ls hwclock*.conf); 
> do mv $f $f.orig; done'
> chroot $rootfs /bin/bash -c 'cd /etc/init; for f in $(ls module*.conf); 
> do mv $f $f.orig; done'
> Why?

In general I think trim'ed containers are considered non-upgradeable
anyway, but if dpkg-divert can be easily used to improve things, that
might be a good idea.  Would you be interested in writing some patches
to that effect?

> 10.
> if [ $release != "lucid" ]; then
>      sed -i 's/^.*emission handled.*$/echo Emitting lo/' 
> $rootfs/etc/network/if-up.d/upstart
> fi
>          * Would not be better if there is an lxclo.conf from lxcguest? 
> Than you don't need to worry about package updates.

Yes, but this is a trimmed container.  Trim means manually slice and
dice the system so you don't need lxcguest.

If you don't do --trim, then this won't be done, and lxcguest will be
installed instead.

> Anyway, nice work guys. Thank you!

Thanks, sorry for taking so long to respond.


More information about the lxc-users mailing list