lxc в Fedora

Решил посмотреть, что же такое lxc-контейнеры.
Материала на эту тему в инете — кот наплакал.
Решил немного сам поделиться, что понял за вечер.

Сетевой мост

Нам обязательно нужен сетевой мост. Как это сделать — написано 100500 раз на разных языках. Например тут.
У меня это выглядит так.
Файл /etc/sysconfig/network-scripts/ifcfg-br0 с таким содержимым:

1
2
3
4
5
6
DEVICE=br0
TYPE=Bridge
BOOTPROTO="dhcp"
ONBOOT="yes"
NM_CONTROLLED="no"
DELAY=0

Файл /etc/sysconfig/network-scripts/ifcfg-p2p1 с таким:

1
2
3
4
5
6
7
DEVICE="p2p1"
TYPE="Ethernet"
HWADDR=50:E5:49:3E:D4:A8
BOOTPROTO="none"
ONBOOT="yes"
NM_CONTROLLED="no"
BRIDGE="br0"

И дополнительно я включил службу network:

1
systemctl enable network.service

С сетевым мостом, я думаю, ты разберешься сам ;)
Условимся лишь, что наименование интерфейса моста — br0, просто в дальнейшем это будет нужно.

Установка lxc

Все предельно просто:

1
yum install lxc lxc-templates lxc-extra

Сразу оговорюсь, что в Fedora 17 шаблонов толком нет никаких, обновляйся.
Проверяем какие есть шаблоны так:

1
ls -l /usr/share/lxc/templates

Ага! Начинаешь понимать суть вещей ;)

Создаем контейнер

Контейнер создается тоже достаточно просто, например Debian 6:

1
lxc-create -t debian -n debian

Ключи тут:

  • -t — какой используем шаблон (имя без lxc- из каталога, предыдущая команда);
  • -n — имя контейнера.

Или вот так создадим контейнер Fedora 18:

1
lxc-create -t fedora -n my-fedora-container -- -R 18

Ключи тут:

  • -R — ну ты же уже сам догадался, да, это версия.

Синтаксис шаблонов — это простые shell-скрипты.
Так, чтобы получить Debian 7 я скопировал шаблон lxc-debian в lxc-debian7 и изменил:

1
SUITE=${SUITE:-squeeze}

на

1
SUITE=${SUITE:-wheezy}

Все просто. И создание контейнера будет выглядеть уже так:

1
lxc-create -t debian7 -n more-debian

Контейнеры создаются в каталоге /var/lib/lxc.
А просто посмотреть имеющиеся контейнеры можно командой:

1
lxc-ls

ОБЯЗАТЕЛЬНО! В конфигурационном файле контейнера надо заменить наименование соединения, иначе не запустится контейнер.
Например для контейнера с именем debian мы сделаем это так:

1
2
cd /var/lib/lxc/debian
vim config

Вместо vim используй любимый текстовый редактор.
Исправляем строку:

1
xc.network.link = virbr0

вот так:

1
xc.network.link = br0

Помнишь, мы условились об имени интерфейса моста? ;)

Запуск контейнера

Рекомендую запускать контейнер внутри screen. Потому заранее установи его.
А запускается контейнер так:

1
2
screen
lxc-start -n debian

где надо указать лишь имя контейнера.
Прямо в терминале запустится другой Linux :)
Не пугайся, если ты делал это в screen, то можешь выйти нажав Ctrl-A D.
Важно! Не пытайся выключать контейнеры.
У меня какое-то странное было поведение с debian’овским контейнером,
после выключения он не включался больше до перезагрузки хостовой машины.
Может это баг, я еще не разобрался.

Остановка контейнера

Тоже все просто:

1
lxc-stop -n debian

Напоследок

У lxc еще полно всяких команд. Я в них не разбирался еще.
Если найдешь что-то интересное — напиши в комментариях, я обновлю пост.

5 Responses to “lxc в Fedora”

  1. mx:

    Ну во первых информации не кот наплакал а много (не надо мата тут и даже намека на него), и мы с гренлионом пол года назад это крутили под федорой ( я его заставил ) :-)
    Но дело сейчас в другом. Примерно 2 недели назад Гудман собрал докер под федору и вся информация про лхс потеряла актуальность. Я пытался какого нибудь с конфы про это рассказать но все тормозят как обычно и даже гренлион. Один Тигро это заценил, но ему некогда лхц дергать :-(
    Может в свете этого топика хоть ты оценишь как это прикольно — http://goldmann.pl/blog/2013/09/25/docker-and-fedora/

Добавить комментарий

%d bloggers like this: