Docker expone todos los puertos o rango de puertos de 7000 a 8000

97

¿Puedo especificar un rango de puertos en un Dockerfile?

EXPOSE 7000-8000

y al ejecutar el contenedor, ¿vincular todos estos puertos expuestos a los mismos puertos en la máquina host?

docker run -p 7000-8000:7000-8000
DarVar
fuente
2
Posible duplicado de Docker: exponer una variedad de puertos
Michael Irigoyen

Respuestas:

133

Desde Docker 1.5, ahora puede exponer un rango de puertos a otros contenedores vinculados usando:

El comando Dockerfile EXPOSE :

EXPOSE 7000-8000

o el comando de ejecución de Docker :

docker run --expose=7000-8000

O en su lugar, puede publicar un rango de puertos en la máquina host a través del comando de ejecución de Docker :

docker run -p 7000-8000:7000-8000

DarVar
fuente
14
Compruebe la salida de "iptables -L -n" en la máquina host y verá cientos de líneas cada una para la asignación de un solo puerto. Si das 5000-50000, entonces prácticamente tienes que esperar mucho tiempo ¿Es este el supuesto comportamiento?
ᐅ devrimbaris
8
@ ᐅ devrimbaris También se está iniciando un proceso de ventana acoplable por puerto . Creo que esto es lo que ocupa la mayor parte del tiempo de trabajo.
Matt
1
los documentos hablan sobre la --publish-all , -Pbandera que "Publica todos los puertos expuestos en puertos aleatorios". docs.docker.com/engine/reference/commandline/run
nils petersohn
2

Para cualquiera que enfrente este problema y termine en esta publicación ... el problema aún está abierto: https://github.com/moby/moby/issues/11185

Gh0sT
fuente
Muchas gracias. Me estaba volviendo loco porque todo se atascó al intentar exponer un rango de mil puertos.
sarusso