Назад | Перейти на главную страницу

CoreOS - запуск контейнеров Docker в определенных VLAN

Это дополнение к вопросу о том, как настроить VLAN на CoreOS [Сеть vlan без операционной системы CoreOS. Мой вопрос после того, как вы это настроите, как вы его используете?

Как запустить контейнер, который помещает интерфейс Ethernet этого контейнера в одну из этих конкретных VLAN?

ВНИМАНИЕ: НАПРАВЛЯЙТЕ ВПЕРЕД!

Сеть (сегодня) внутри Docker немного неудобна, поэтому нам нужно компенсировать множество предположений, сделанных от имени пользователей. Для этого вам нужно создать мостовой интерфейс, чтобы интерфейсы действительно работали, а затем передать конфигурацию через --lxc-conf варианты в стиле, аналогичном этот ответ.

В качестве примера (Предостережения, это, скорее всего, не будет напрямую копироваться / вставляться. Я извергаю это из памяти):
Сначала мы настраиваем вспомогательный интерфейс на eth0 который находится на VLAN800:

/etc/sysconfig/network/05-eth0.netdev:

[Match]
Name=eth0.800

[Network]
Address=192.168.20.25/24
Gateway=192.168.20.1
DNS=192.168.1.1
VLAN=800

Далее мы создаем мост для Другой устройства, которым потребуется доступ к этой VLAN:

/etc/sysconfig/network/20-br800.netdev:

[NetDev]
Name=br800
Kind=bridge

Затем мы присоединяем созданный ранее подинтерфейс к мосту:

/etc/sysconfig/network/50-eth0-800.netdev:

[Match]
Name=eth0.800

[Network]
Bridge=br800

Теперь мы находимся в состоянии, когда у нас есть сеть, которую мы хотим настроить на хосте, и мы можем делать что-то вроде:

docker run \
--net="none" \
--lxc-conf="lxc.network.type = veth" \
--lxc-conf="lxc.network.ipv4 = 192.168.20.30/24" \
--lxc-conf="lxc.network.ipv4.gateway = 192.168.20.1" \
--lxc-conf="lxc.network.link = br800" \
--lxc-conf="lxc.network.name = eth0" \
--lxc-conf="lxc.network.flags = up" \
-d [Docker Image ID]

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