CoreOS - Iniciando contêineres do Docker em VLANs específicas

1

Esta é uma adição a essa pergunta sobre como configurar VLANs no CoreOS [ CoreOS bare rede de vlan de metal . Minha pergunta é depois de configurar isso, como você usa?

Como você inicia um contêiner que coloca a interface ethernet desse contêiner em uma dessas VLANs específicas?

    
por gar 22.01.2015 / 19:11

1 resposta

2

AVISO: HACKS ADIANTE!

Rede (hoje) é um pouco estranha dentro do Docker, então precisamos compensar muitas das suposições feitas em nome dos usuários. Para fazer isso, você precisa criar uma interface de ponte para que as interfaces realmente se assentarem e, em seguida, passar a configuração via --lxc-conf options de maneira semelhante a esta resposta.

Como exemplo (Advertências, isso provavelmente não será diretamente copiável / pastável. Estou regurgitando isso da memória):
Primeiro, configuramos uma subinterface em eth0 , que está no 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

Em seguida, criamos uma ponte para outros dispositivos que precisarão acessar essa VLAN:

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

[NetDev]
Name=br800
Kind=bridge

Em seguida, anexamos a subinterface criada anteriormente à ponte:

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

[Match]
Name=eth0.800

[Network]
Bridge=br800

Agora estamos em um estado em que temos a rede que queremos configurar no host e podemos fazer algo como:

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]

Idealmente, não teríamos que fazer tanto hacking apenas para obter a configuração de rede, mas isso leva à capacidade de criar várias pontes conectadas a diferentes VLANs e segmentar tráfego de diferentes containers e forçá-lo a passar por algum roteador upstream.

    
por 23.01.2015 / 18:20