Skip to main content

HOWTO: Linux Container (LXC) on Fedora 12

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

Preparation

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>


Networking

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

10 comments

Popular posts from this blog

Adding simple popup to Plone frontpage

Here is a little guide for those who want to add a simple popup to the Plone frontpage for some purpose (eg: announcements, advertisements, etc).

Create a basic html file containing the content you want to appear in the popup. Upload it into $PLONE_SITE/portal_skins/custom (as Page Template) and for the sake of this example, name it popup.html

Afterward, create a Javascript file with your Pop-Up loader script. For example , this script:


function popup(mylink, windowname)
{
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
window.open(href, windowname, 'width=220,height=400,scrollbars=no');
return false;
};

popup('popup.html', 'My Popup');


Also upload this file into $PLONE_SITE/portal_skins/custom (as Page Template too). For this example, name it as popup.js

Afterward, in $PLONE_SITE/portal_javascripts , add popup.js as a new script into portal_javascripts…

Consolidated community site infrastructure on Plone

In Inigo, we believe in helping out local FOSS communities and help them grow. We help out in community events where we can, present FOSS talks, and provide some platforms for local communities to grow. One of such platform is our consolidated community site infrastructure on Plone.

The system/infra and its components was originally developed for the Fedora Malaysia website, while keeping in mind to keep it generic enough so that other communities could use the same components for their own community sites. The infra is already at a usable state, and we can add new sites easily with just a few clicks.

Features in this consolidated infra are:
Document/Content management (Plone built-in)Calendar system (powered by solgema.fullcalendar addon)Conference/BarCamp system (powered by collective.conference addon, which was developed for FUDCon Kuala Lumpur 2012)Blog (powered by Products.Scrawl)Simple yet powerful theming engine (powered by plone.app.theming/ Diazo) - Check out Diazo, you'l…

HOWTO: Mirroring Yum repositories using Yum-Utils

As promised before in one of my previous post, a Howto on how to mirror and manage yum repositories using some of the utilities in yum-utils.

The first step is, well, of course, is to get yum-utils from fedora repository
yum install yum-utils

Reposync
Reposync is a utility for mirroring and synchronizing local copy of a yum/rpmmetadata repository.

This utility is very useful if you wanted to make a yum repository mirror. Before this, I used "wget -R -np -N" but this method is a little bit tedious and it doesnt work with repos that didn't use directory listing. Plus, it also download together additional site stuff that I don't need/want and it doesn't verify checksum of the downloaded packages.

Mirroring a repo using this utility is easy, just execute this command
reposync -r <repoid> -a <arch> -n
and the repo will be mirrored in a folder with the same name of the repoid in the directory you executed the command. Eg: you executed the command in /mnt/storage/mi…