O Docker expõe todas as portas ou intervalo de portas de 7.000 a 8.000

97

Posso especificar um intervalo de portas em um Dockerfile

EXPOSE 7000-8000

e ao executar o contêiner vincular todas essas portas expostas às mesmas portas na máquina host?

docker run -p 7000-8000:7000-8000
DarVar
fonte
2
Possível duplicata do Docker: expor um intervalo de portas
Michael Irigoyen

Respostas:

134

Desde o Docker 1.5, agora você pode expor uma variedade de portas para outros contêineres vinculados usando:

O Dockerfile EXPOR comando:

EXPOSE 7000-8000

ou o comando de execução do Docker :

docker run --expose=7000-8000

Ou, em vez disso, você pode publicar um intervalo de portas na máquina host por meio do comando Docker run :

docker run -p 7000-8000:7000-8000

DarVar
fonte
14
Verifique a saída de "iptables -L -n" na máquina host e você verá centenas de linhas cada para mapeamento de porta única. Se você der 5000-50000, então praticamente terá que esperar muito tempo. Esse é o comportamento suposto?
ᐅ devrimbaris
8
@ ᐅ devrimbaris Há também um processo docker sendo iniciado por porta . Acho que é isso que ocupa a maior parte do tempo de trabalho.
Matt
1
os documentos falam sobre o --publish-all , -Psinalizador que "Publicar todas as portas expostas em portas aleatórias". docs.docker.com/engine/reference/commandline/run
nils petersohn
2

Para quem está enfrentando esse problema e terminando neste post ... o problema ainda está aberto - https://github.com/moby/moby/issues/11185

Gh0sT
fonte
Muito obrigado. Eu estava ficando louco porque tudo travou ao tentar expor um alcance de mil portas.
sarusso