Привязать контейнер docker к одному сетевому интерфейсу - PullRequest
0 голосов
/ 18 апреля 2020

В настоящее время моя домашняя сеть логически разделена на 2 отдельные VLANS.

  • LAN (без тегов собственная локальная сеть 10.20.0.0/16): где все доверенные устройства будут работать
  • IOT_LAN (с тегом 30 10.30.0.0/16): где будут работать все ненадежные устройства IOT / для домашних развлечений.

На уровне брандмауэра LAN может получить доступ IOT_LAN но не наоборот.

Я использую Docker на Raspberry Pi 4, подключенном через кабель ethe rnet к транковому порту моего коммутатора. На уровне Raspi собственная локальная сеть связана с интерфейсом eth0, а IOT_LAN связана с eth0.30.

. Вопрос здесь заключается в следующем: можно ли одновременно запускать 2 разных контейнера? одна привязана к интерфейсу eth0, а другая связана с eth0.30?

В качестве примера можно сказать, что контейнер 1 - это приложение, которое должно иметь возможность доступа к основной сети LAN, а контейнер 2 - это приложение IOT Speci c, которое я хочу ограничить сетью IOT_LAN.

Спасибо

1 Ответ

0 голосов
/ 21 апреля 2020

Вот как я решил проблему:

Я создал сеть в файле docker-compose.yml:

# IOT_LAN.
networks:
  vlan30:
    driver: macvlan
    driver_opts:
      parent: eth0.30
    ipam:
      config:
        - subnet: 10.30.0.0/16

Каждый контейнер, который должен оставаться в сети 10.30, затем подключается к указанной выше сети с использованием следующего синтаксиса:

networks:
  vlan30:
    ipv4_address: "10.30.0.15"

IP-адрес определяется в файле docker -compose и должен принадлежать зарезервированному диапазону, ранее созданному на маршрутизаторе, чтобы избежать конфликта с DHCP назначенные адреса.

Это сработало для меня. Все контейнеры теперь принадлежат только 10.30 сети.

...