Докер выставляет все порты или диапазон портов от 7000 до 8000

101

Могу ли я указать диапазон портов в Dockerfile

EXPOSE 7000-8000

а при запуске контейнера привязать все эти открытые порты к одним и тем же портам на хост-машине?

docker run -p 7000-8000:7000-8000
ДарВар
источник
2
Возможный дубликат Docker: раскрыть ряд портов
Майкл Иригойен

Ответы:

138

Начиная с Docker 1.5, вы можете предоставить доступ к ряду портов другим связанным контейнерам, используя:

Команда Dockerfile EXPOSE :

EXPOSE 7000-8000

или команда запуска Docker :

docker run --expose=7000-8000

Или вместо этого вы можете опубликовать диапазон портов на хост-машине с помощью команды запуска Docker :

docker run -p 7000-8000:7000-8000

ДарВар
источник
14
Проверьте вывод «iptables -L -n» на хост-машине, и вы увидите сотни строк каждая для сопоставления одного порта. Если дать 5000-50000, то практически придется долго ждать. Это предполагаемое поведение?
ᐅ devrimbaris
8
@ ᐅ devrimbaris Также запускается процесс докера для каждого порта . Я считаю, что это то, что отнимает большую часть рабочего времени.
Мэтт
1
в документации говорится о --publish-all , -Pфлаге «Публикация всех открытых портов в случайные порты». docs.docker.com/engine/reference/commandline/run
nils petersohn
4

Для всех, кто столкнулся с этой проблемой и попал в этот пост ... проблема все еще открыта - https://github.com/moby/moby/issues/11185

Gh0sT
источник
Большое вам спасибо. Я сходил с ума, так как все зависло при попытке открыть диапазон в тысячу портов.
Саруссо
Вы нашли решение выставить диапазон в тысячу горшков? @sarusso
dko