Fast forward today, it seems LXC Linux Containers (http://lxc.sourceforge.net) has now made some strides. Its now part of the main kernel, most modern distro should have like. Here is a quick guide on how to get lxc up and running on Ubuntu Lucid.
Below is to setup a debian lenny guest, that uses virbr0 and has dhcp. Do the following as root:
- install libvirt as its easier to do networking on it. No need to setup your own bridge, ipchains and nat. libvirt default qemu network should create a virbr0 interface.
apt-get install libvirt-bin
I have installed this prior for kvm. What we want is virbr0 is up and running. You check this by ifconfig. Try to start it manually on /etc/init.d/libvirt-bin
- install lxc
apt-get install lxc debootstrap
- create the capabilities dir and mount it
mkdir /cgroup
add to /etc/fstab
none /cgroup cgroup defaults 0 0
mount /cgroup
- get and edit the lxc-debian script from /usr/share/doc/lxc/examples/lxc-debian.gz (gunzip it somewhere and apply correct permissions)
Edit and add the following lxc parameters on copy_configuration() function before EOF
# networking
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = virbr0
lxc.network.name = eth0
lxc.network.mtu = 1500
EOF
What this does is use the host virbr0 which is already NATed. This would appear as eth0 on the guest container.
You may need to edit increase the tty allowed, I was getting init warning on my syslog respawning. What I did was to edit my guest inittab to reduce the tty.
lxc.tty = 4 to lxc.tty = 6
- create your lxc dir. In my case the name of my container is "altair". Change it as you fit.
mkdir /home/lxc/altair
lxc-debian -p /home/lxc/altair create
This would start downloading debian lenny packages and create the root file system on /home/lxc/altair/rootfs.
- create the container
lxc-create -n altair -f /home/lxc/altair/config
- run the container
lxc-start -n altair
the above runs it on the foreground, once you have setup everything then you can run it as a deamon
lxc-start -n altair -d
Once you are inside the container, things that I did was
- set the hostname
- fix /etc/hosts
- add your favorite repo on /etc/apt/sources.list
- add X forwarding on ssh and install xauth package
- install rsyslog
- maybe edit your hosts /etc/hosts and add the IP address of the container.
Some useful links:
http://lxc.teegra.net/
http://blog.bodhizazen.net/linux/lxc-configure-ubuntu-lucid-containers/
http://nigel.mcnie.name/blog/a-five-minute-guide-to-linux-containers-for-debian
http://en.gentoo-wiki.com/wiki/LXC
2 comments:
Thx for post.
I've got the following error:
# lxc-start: failed to clone(0x6c020000): Invalid argument
lxc-start: Invalid argument - failed to fork into a new namespace
lxc-start: failed to spawn '/sbin/init'
lxc-start: cgroup is not mounted
It seems that the problem was:
https://lists.ubuntu.com/archives/kernel-team/2011-March/015203.html
an the Lucid Linx kernel was updated on 20 Apr 2011:
https://launchpad.net/ubuntu/+source/linux/2.6.32-32.62
* (config) Disable CONFIG_NET_NS
- LP: #720095
Running a previous kernel package (the one just before the change: 2.6.32-31) and lxc works well (may be, eating some memory ...)
# lxc-checkconfig
Kernel config /proc/config.gz not found, looking in other places...
Found kernel config file /boot/config-2.6.32-31-generic-pae
--- Namespaces ---
Namespaces: enabled
...
Network namespace: enabled
...
Luis
Thanks Luis.
I encountered this too. What i did was to use the backported Maverick kernel. Now I am at Natty Narwhal its ok.
Post a Comment