¿Cómo puedo exponer más de 1 puerto con Docker?
Entonces tengo 3 puertos que deberían estar expuestos a la interfaz de la máquina. ¿Es posible hacer esto con un contenedor Docker?
Para exponer solo un puerto, esto es lo que debe hacer:
docker run -p <host_port>:<container_port>
Para exponer varios puertos, simplemente proporcione varios -p
argumentos:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
Paso 1
En su Dockerfile
, puede utilizar el verbo EXPOSE
para exponer varios puertos.
p.ej
EXPOSE 3000 80 443 22
Paso 2
Luego le gustaría crear una nueva imagen basada en lo anterior Dockerfile
.
p.ej
docker build -t foo:tag .
Paso 3
Luego puede usar -p
para asignar el puerto del host con el puerto del contenedor, como se define anteriormente EXPOSE
en Dockerfile
.
p.ej
docker run -p 3001:3000 -p 23:22
En caso de que desee exponer una variedad de puertos continuos, puede ejecutar la ventana acoplable de esta manera:
docker run -it -p 7100-7120:7100-7120/tcp
si usas docker-compose.yml
el archivo:
services:
varnish:
ports:
- 80
- 6081
También puede especificar el puerto de host/red comoHOST/NETWORK_PORT:CONTAINER_PORT
varnish:
ports:
- 81:80
- 6081:6081