После тщательных исследований, тестирования и прошивки я смог найти только подключение контейнера Docker к данному интерфейсу путем пересылки с IP-адреса/порт. Это можно сделать, добавив -p Host-IP:Host-Port:Container-Port
в команду docker run
.Подключение контейнера Docker к сетевому интерфейсу/устройству вместо IP-адреса
У меня есть приложение, которое прослушивает широковещательные рассылки UDP (255.255.255.255) и не может настроить переадресацию таким образом, чтобы мой контейнер получал эти широковещательные рассылки без пересылки всего сетевого трафика на порт, который мне волнует (нет материя, через которую он входит), то есть: -p Host-Port:Container-Port
.
Можно сконфигурировать контейнер с помощью --net=host
и просто написать мой код для привязки к данному интерфейсу, который я сделал и протестировал, но это все еще противоречит основной идее контейнера. Цель состоит в том, чтобы несколько контейнеров одного и того же приложения прослушивали разные сетевые интерфейсы (как в устройствах, не в адресах).
Любые идеи о том, как я мог это сделать?
EDIT # 1: Подумав об этом еще немного, возможно, что настройка моста через необходимый интерфейс достаточно, но я не доверяю ОС для отправки широковещательных пакетов по ней. Оставайтесь с нами, когда я выполняю больше тестов.
EDIT # 2: Пакеты отправляются через мост просто отлично. Однако мост сконфигурирован как мост Docker по умолчанию. Я не мог понять, как запускать контейнеры на разных мостах. Увидел несколько заметок, указывающих на настройку сети на --net=none
и настройку ее самостоятельно через настройки контейнера lxc.
почему докер не мост достаточно хорошо? –
Не удалось настроить мост докеров так, чтобы я мог указать, к каким сетевым интерфейсам подключиться. Это означает, что я не могу иметь отдельные контейнеры для сетевого интерфейса. – tryexceptpass
вы можете разместить свое решение? Мне нужно что-то подобное, чтобы запустить экземпляр DHCP внутри контейнера докера –