Linux: поднимаем контейнеры LXC за 5 минут

Контейнерная виртуализация LXC (Linux Containers) появилась в ядре с версии 2.6.29. Технология хороша тем, что не требует специфических патчей ядра в отличии от OpenVZ и очень проста в использовании. В Debian появилась в Squeeze.

Устанавливаем:

apt-get install lxc bridge-utils debootstrap


К слову, bridge-utils нужен только в случае настройки сети через мост, т.е. чтобы система в контейнере имела виртуальный сетевой интерфейс со своим mac и ip адресом. Я в данном топике настраивать мост не буду, мне LXC нужен в качестве удобного средства попробовать софт не засоряя основную систему. Без настройки моста контейнеры используют интерфейс основной машины.

Прописываем в /etc/fstab

cgroup          /cgroup         cgroup  defaults        0       0


Создаем директорию и монтируем:

mkdir /cgroup
mount -a


Создаем директорию для виртуальной системы и создаем ее с помощью скрипта lxc-debian, который установит минимальную версию Debian Lenny.

mkdir -p /var/lib/lxc/vm0


/usr/lib/lxc/templates/lxc-debian -p /var/lib/lxc/vm0/


Стартуем систему:

lxc-start -n vm0


Логин и пароль — root/root. Все команды для работы с LXC начинаются с префикса lxc- и разобраться в них очень просто.

При использовании ядра linux версии 3.0.0 я столкнулся со следующей проблемой при запуске.

lxc-start: No such file or directory — failed to rename cgroup /cgroup/28788->/cgroup/vm0
lxc-start: failed to spawn 'vm0'
lxc-start: No such file or directory — failed to remove cgroup '/cgroup/vm0'

При использовании ядра 2.6.39-2-686-pae все работает.

Почитать:

wiki.debian.org/LXC
nigel.mcnie.name/blog/a-five-minute-guide-to-linux-containers-for-debian
blog.foaa.de/2010/05/lxc-on-debian-squeeze/