[Comm] LXC

Yury Bushmelev jay4mail на gmail.com
Сб Сен 10 16:01:52 UTC 2011


10 сентября 2011 г. 18:50 пользователь Алексей Синицын
<asinitsinster на gmail.com> написал:
> 7 сентября 2011 г. 23:57 пользователь Yury Bushmelev
> <jay4mail на gmail.com> написал:
[skip]
>> Я себе на ArchLinux делал вот по этому руководству
>> https://wiki.archlinux.org/index.php/Linux_Containers
>>
>
>  Спасибо, хорошее описание. В принципе для нашего случая несколько
> избыточно, но избыточность лучше недостаточности. Можно попробовать
> убрать лишние части, как например компилирование ядра, и переписать в
> контексте данного дистрибутива.
>
>  В прошлый раз у меня возникло затруднение при подготовке сетевого
> интерфейса, но это тоже место которое как раз различается. Если Вы
> используете /etc/net то не поделитесь ли конфигурационными файлами
> моста? Тогда я читал какое то также постороннее описание, но так и не
> смог распутаться на кого назначать адреса и какие. Это как раз одно из
> мест, которые в ovz уже автоматизированы.

Ну, как я выше указал, у меня на этой машине сейчас ArchLinux. Но, на
самом деле, там это место уже тоже сломали. Я могу словами описать,
что там надо сделать, а уж как это переложить на etcnet я не советчик
:)

Для начала надо прочитать man lxc.conf. Потом перечитать секцию
NETWORK на предмет желаемого типа (lxc.network.type). Мне нужен был
доступ к контейнеру, как к обычной машине в локальной сети, но
выделять ей свою собственную сетевуху я не хотел. Поэтому выбрал тип
veth. Собственно, этот вариант ничем не отличается от qemu/kvm c
tun/tap-интерфейсами или virtualbox с бриджем.

В этом режиме создается пара интерфейсов, которые соединены друг с
другом. Один из них "торчит" в хосте (veth0), другой - в контейнере
(eth0).

В контейнере все просто - конфигурим его так, как будто это выделенный
компьютер, который подключен в вашу локалку. При желании даже dhcp
можно использовать.

На хосте, чтобы получить желаемый эффект, нужно проделать некоторые
дополнительные телодвижения.
Создается бридж (br0) из двух интерфейсов - хостовый eth0 и veth0. Тот
ip, который стоял у вас на eth0, нужно перенести на интерфейс бриджа
(br0). На eth0 и veth0 никаких ip не ставим.

Чтобы проще было понять - представьте, что это виртуальный свитч, в
который воткнуты три хвоста - от вашей хост-системы (собственно, сам
br0), от вашего контейнера (veth0) и аплинк в домашний свитч (eth0).

Примечание: именование интерфейсов в вашем случае может отличаться.

Почитайте также http://www.altlinux.org/Etcnet, раздел "Настройка
Ethernet-моста".

На всякий случай привожу свой кусок конфига lxc-контейнера, касающийся сети.

lxc.network.type = veth
lxc.network.veth.pair = veth0
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = DE:AD:BE:EF:C0:00

-- 
Yury Bushmelev


Подробная информация о списке рассылки community