Docker ujawnia wszystkie porty lub zakres portów od 7000 do 8000

99

Czy mogę określić zakres portów w pliku Dockerfile

EXPOSE 7000-8000

i podczas uruchamiania kontenera powiązać wszystkie te ujawnione porty z tymi samymi portami na komputerze hosta?

docker run -p 7000-8000:7000-8000
DarVar
źródło
2
Możliwy duplikat Dockera: ujawnij zakres portów
Michael Irigoyen

Odpowiedzi:

137

Od Döcker 1.5 można teraz wystawiać zakres portów do innych pojemników połączonych z wykorzystaniem:

Dockerfile EXPOSE polecenie:

EXPOSE 7000-8000

lub polecenie uruchomienia platformy Docker :

docker run --expose=7000-8000

Lub zamiast tego możesz opublikować zakres portów na maszynie hosta za pomocą polecenia uruchomienia Dockera :

docker run -p 7000-8000:7000-8000

DarVar
źródło
14
Sprawdź wyjście "iptables -L -n" na hoście, a zobaczysz setki linii dla mapowania pojedynczego portu. Jeśli podasz 5000-50000, to praktycznie musisz długo czekać, czy to jest rzekome zachowanie?
ᐅ devrimbaris
8
@ ᐅ devrimbaris Dla każdego portu uruchamiany jest również proces dockera . Myślę, że to zajmuje większość czasu pracy.
Matt
1
dokumentacja mówi o --publish-all , -Pfladze „Publikuj wszystkie udostępnione porty do losowych portów”. docs.docker.com/engine/reference/commandline/run
nils petersohn
4

Dla każdego, kto boryka się z tym problemem i kończy w tym poście ... problem jest nadal otwarty - https://github.com/moby/moby/issues/11185

Gh0sT
źródło
Dziękuję bardzo. Szalałem, gdy wszystko utknęło, gdy próbowałem odsłonić zakres tysiąca portów.
sarusso
Czy znalazłeś rozwiązanie, aby wyeksponować zakres tysiąca doniczek? @sarusso
dko