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 еще полно всяких команд. Я в них не разбирался еще.
Если найдешь что-то интересное — напиши в комментариях, я обновлю пост.

lxc в Fedora: 5 комментариев

  1. mx

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

    1. svr

      У докера очень специфический способ применения, без грида типа месоса не шибко полезный. Фактически то же даёт запуск средствами systemd

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.