Отображение динамически открытых портов внутри контейнера docker


Предполагая, что приложение, которое динамически открывает UDP-порты, работающие внутри контейнера docker, как можно было бы открыть / связать такие порты с внешними (хостовыми) портами?

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

Есть ли способ настроить взаимное отображение динамически открытых портов в контейнерах с хостом?

Например, порт 45199/udp открывается внутри контейнера и подвергается воздействию порта 45199/udp на хосте?

1 2

1 ответ:

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

Вероятно, в вашем сценарии лучшим подходом будет выставление некоторого диапазона портов, т. е.:

docker run --expose=7000-8000 ...

И ссылаться на контейнеры по IP-адресу в случае мостовой сети по умолчанию (вам придется использовать IP-адрес контейнера с помощью docker inspect) или по имени в случае пользователя определенная сеть (https://docs.docker.com/engine/userguide/networking/configure-dns/).