Не могу установить исходный порт udp в докере - PullRequest
0 голосов
/ 19 ноября 2018

Я использую Docker 18.06.1-ce-win73 в Windows 10 и пытаюсь выполнить следующую операцию udp:

Порт Docker 10001 -------------->порт хоста 10620

Обязательно, чтобы приложение, работающее на хосте, получало пакеты от порта 10001.

Внутри док-контейнера, используя python I, связывается с IP ('0.0.0.0', 10001) и используйте сокет для отправки моих пакетов на IP-адрес хоста через порт 16020.

Я также запустил контейнер с аргументом -p 10001: 10001 / udp.К сожалению, при получении пакета в хост-приложении исходный порт - не 10001, а случайный.

Можно ли заставить docker использовать определенный исходный порт при использовании UDP изнутри контейнера?

1 Ответ

0 голосов
/ 20 ноября 2018

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

Однако, если вам действительно нужен контроль над портом-источником, подобным этому, вам лучше переключиться на хост-сеть (--net=host илиnetwork_mode: host в зависимости от того, как вы запускаете свои контейнеры), или перейдите на сетевой драйвер, такой как macvlan, который предоставляет доступ к контейнеру напрямую, без прохождения правил NAT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...