old blog,

HOWTO: Linux Container (LXC) on Fedora 12

Izhar Firdaus Izhar Firdaus Follow Support Mar 03, 2010 · 2 mins read
HOWTO: Linux Container (LXC) on Fedora 12
Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.
Those who are familiar with BSD Jails or Solaris Zones might be quite familiar to the concept of OS-level virtualization. The Linux world have several options for this, such as the User Mode Linux (UML), OpenVZ, Linux Vserver, and most recently, Linux Container (LXC).

Unlike the other alternatives, which requires specially patched kernels to run it, LXC got fully functional in the upstream kernel since 2.6.29, which is a plus as it made it easier to deploy it in many prexisting distros which ship 2.6.29, including Fedora - without messing around with the distro packages.

In this HOWTO, I'll guide through the process of deploying your own LXC in Fedora 12, with NAT to libvirt's virbr0


yum install libvirt lxc

(ping me if i forgot to add any packages)

start libvirt so that virbr0 is configured
/sbin/service libvirtd start

mount control group in /cgroup
echo "none /cgroup cgroup   defaults  0 0" >> /etc/fstab
mkdir /cgroup
mount /cgroup

LXC Fedora Script

The lxc rpm provides a script named lxc-fedora to aid creation of lxc container. However, when I tried it, it doesnt quite work. After some googling, I found this guide http://blog.bodhizazen.net/linux/lxc-configure-fedora-containers/, of which, based on it, I've updated the lxc-fedora script accordingly to make it work using febootstrap.

You can grab the script in my FedoraPeople GIT repository here : lxc-febootstrap

Download the script and save it somewhere in you system path.

Creating the Container

lxc-febootstrap create

The script would install the container rootfs in /var/lib/lxc/rootfs/. So make sure you have enough free space to store it (around 400MB for the base bootstrap). You'll also need approximately 400MB in /var/cache/lxc for the reusable vanilla copy of the rootfs.

Answer the questions from the script, and wait until the process is done. At the end of the process, the script would ask for a password for root. Set it.

Controlling the LXC Container

You can start the container using:
lxc-start -n <containername>

You can start the container in background using:
lxc-start -d -n <containername>

Stop it using:
lxc-stop -n <containername>

Destroy it using:
lxc-febootstrap destroy

Connect to a console of the LXC using:
lxc-console -n <containername>


The lxc-febootstrap script have been configured to make use of libvirt's virbr0. It is a virtual bridge, so treat it like any other networking bridge in Linux.

The default configuration of virbr0 (if i'm not mistaken) is that it have dhcp and routing already configured for virtual machines that utilize it. So, networking should JustWorks (unless I missed certain steps in this guide, currently it worksforme).

Thats it .. Enjoy and Happy Hacking :D

Written by Izhar Firdaus Follow Support
I'm a system architect, data engineer and developer advocate with passion in Free / Open Source software, entrepreneurship, community building, education and martial art. I take enjoyment in bridging and bringing together different FOSS technologies to help businesses and organizations utilize IT infrastructure to aid and optimize their business and organizational process.

FOSS.Org.MY Meetup : March 2010

FOSS.Org.MY (formerly: MyOSS) Meetup is BACK!!!! with a new name, and a new format, and new timing!!We will be having Lightning Talk ...

In old blog, Mar 02, 2010

« Previous Post

repoze.bfg - Introduction and bootstrapping it on buildout

2 months without a post here .. T_T ... must .. restart .. blogging ...Anyway, I've been poking around with repoze.bfg since last wee...

In old blog, May 08, 2010

Next Post »