Difference between revisions of "LXC"
Line 1: | Line 1: | ||
− | These instructions assume Ubuntu 12.04 LTS. | + | '''LXC''', or '''Linux Containers''', is the successor to VServer and is now in the main kernel; most modern distributions should have it. http://lxc.sourceforge.net/ |
+ | These instructions assume Ubuntu 12.04 LTS. The [https://help.ubuntu.com/12.04/serverguide/lxc.html LXC Ubuntu Server Guide] is very good and contains pretty much all you need to know. A lot of work has been done on 12.04 to make it very simple to get started. | ||
== Install and set up LXC container == | == Install and set up LXC container == |
Revision as of 02:00, 8 February 2013
LXC, or Linux Containers, is the successor to VServer and is now in the main kernel; most modern distributions should have it. http://lxc.sourceforge.net/ These instructions assume Ubuntu 12.04 LTS. The LXC Ubuntu Server Guide is very good and contains pretty much all you need to know. A lot of work has been done on 12.04 to make it very simple to get started.
Install and set up LXC container
In sum, we install LXC and create a base container, set it up nicely, then clone project containers from it as required. Here's roughly what I had to do to set up LXC nicely.
sudo apt-get install lxc
Create a base container to serve as a template
sudo lxc-create -t ubuntu -n base sudo lxc-start -n base
Log in with the default account, (username ubuntu, password ubuntu), then add yourself as a user with sudo:
sudo adduser username sudo adduser username sudo
This installs some nifty default guff, fixes the probably broken UTC timezone, and fixes locales BEFORE you install things that expect UTF-8 locales, but in particular PostgreSQL (otherwise you end up with SQL_ASCII encoding and nobody wants that):
sudo apt-get install git bash-completion language-pack-en openssh-server sudo dpkg-reconfigure tzdata
Set up a SSH shortcut for containers
Back on your host workstation, set up an SSH shortcut. If you add the following to your ~/.ssh/config, you will be able to ssh to your containers nice and easily:
# LXC containers Host *.lxc StrictHostKeyChecking no UserKnownHostsFile /dev/null ProxyCommand nc $(host $(echo %h | sed "s/\.lxc//g") 10.0.3.1 | tail -1 | awk '{print $NF}') %p
Then one can ssh to the containers by appending .lxc to the container name:
ssh myproject.lxc
and then schlepp your handy stuff over:
scp -rp ~/.bashrc ~/.vim* ~/.gitconfig base.lxc: scp ~/.ssh/authorized_keys base.lxc:.ssh/authorized_keys
Clone a new project container from the template
Now you should have a useful base container, so clone it for your nifty-kitten project and start it (most usefully in a screen session):
sudo lxc-shutdown -n base sudo lxc-clone -o base -n nifty-kitten screen sudo lxc-start -n nifty-kitten [Ctrl-a] [d] to detach