Отображение динамически открытых портов внутри контейнера docker
Предполагая, что приложение, которое динамически открывает UDP-порты, работающие внутри контейнера docker, как можно было бы открыть / связать такие порты с внешними (хостовыми) портами?
Это, возможно, то же самое, что и вопрос, поднятый здесь, но ответ (с использованием --net=host
) ограничивает масштабируемость запуска нескольких экземпляров контейнера, предоставляющих одни и те же порты хосту.
Есть ли способ настроить взаимное отображение динамически открытых портов в контейнерах с хостом?
Например, порт 45199/udp
открывается внутри контейнера и подвергается воздействию порта 45199/udp
на хосте?
1 ответ:
Вероятно, вы можете найти какой-то способ автоматического ввода портов с хоста контейнера, но тогда у вас будут те же проблемы, что и в случае сети хоста (возможные конфликты портов в случае нескольких экземпляров контейнера).
Вероятно, в вашем сценарии лучшим подходом будет выставление некоторого диапазона портов, т. е.:
docker run --expose=7000-8000 ...
И ссылаться на контейнеры по IP-адресу в случае мостовой сети по умолчанию (вам придется использовать IP-адрес контейнера с помощью docker inspect) или по имени в случае пользователя определенная сеть (https://docs.docker.com/engine/userguide/networking/configure-dns/).