Во-первых, я знаю о создании интерфейса VXLAN с тэгом на основе команды IP:Как добавить Vxlan тег для изоляции различных групп Докер контейнеров
ip link add vxlan-br0 type vxlan id <tag-id> group <multicast-ip> local <host-ip> dstport 0
Но это бесполезно для моего фактического спроса, и мое требование, чтобы изолировать несколько контейнеров Docker с использованием различных тегов, что-то вроде:
brctl addif br1 veth111111 tag=10 # veth111111 is the netdev used by docker container 1 brctl addif br1 veth222222 tag=20 # veth222222 is the netdev used by docker container 2 brctl addif br1 veth333333 tag=10 # veth111111 is the netdev used by docker container 3
Я хочу, чтобы изолировать контейнер 2 из контейнера 1 и 3, и не отключают связи Bew teen container 1 и 3. Как это сделать?
Хороший идеал. Однако этот подход требует создания мостов O (| Group |). В худшем случае | Group | = | Контейнеры |. Знаете ли вы, что максимальное количество мостов может быть создано на одном хосте? Есть ли какое-либо решение для создания O (1) -моста для общего использования и использования тега VXLAN для изоляции разных групп? – ghostplant
@ghostplant Для изоляции одного контейнера используйте команду '--icc = false' в сети по умолчанию. Один мост имеет ограничение 1023 интерфейсов. По-видимому, все начинается с замедления в Linux за 9600 интерфейсов (https://support.cumulusnetworks.com/hc/en-us/articles/216420547-Calculating-the-Limitation-of-a-Linux-Bridge-In-Traditional -Mode), но я так и не запустил сеть. Вы должны получить больше мостов + интерфейсов, чем интерфейсы на мосту. Я также предостерег бы от пользовательской сети, чтобы вы могли легко использовать инструменты Docker, такие как compose, swarm, Kuberenetes, ECS и т. Д. – Matt