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


101

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

EXPOSE 7000-8000

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

docker run -p 7000-8000:7000-8000

Ответы:


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


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

Вы нашли решение выставить диапазон в тысячу горшков? @sarusso
dko
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.