Los puertos de contenedor son puertos de red específicos que pueden vincularse a servicios o aplicaciones concretos dentro de un contenedor.
Cada contenedor puede tener sus propios puertos para comunicarse con el mundo exterior o con otros contenedores. Al iniciar un contenedor, puedes especificar qué puertos deben estar disponibles dentro del contenedor y qué puertos deben ser reenviados a la máquina anfitriona.
ports:
external_port:Internal port
Por ejemplo, reenviemos el puerto 80 como 8094:
docker-nginx:
image: nginx
ports:
- '8094:80'
Cuando el contenedor se está ejecutando, la aplicación dentro del contenedor puede escuchar o enviar datos a través del puerto apropiado. Los usuarios pueden interactuar con la aplicación accediendo al puerto del contenedor que fue reenviado a la máquina anfitriona.
Para iniciar los puertos del contenedor, tendrás que utilizar el comando docker run
con la bandera -p
o --publish
.
La sintaxis para el comando docker run con la bandera -p
es la siguiente:
docker run -p <host port>:<container port> <image_name>
Donde:
<puerto-host> es el puerto en tu host que será proxyado al puerto del contenedor.
<puerto_del_contenedor> - el puerto dentro del contenedor al que se accederá a través del puerto del host especificado.
<nombre_de_imagen> - el nombre de la imagen del contenedor que desea ejecutar.
Por ejemplo, para iniciar un contenedor con un servidor web en el puerto 80 y proxy al puerto 8080 de su host, puede utilizar el siguiente comando:
docker run -p 8080:80 nginx
El servidor web que se ejecuta en el contenedor ahora será accesible en el puerto 8080 de su host.
También puede utilizar un rango de puertos especificando múltiples pares <puerto-host>:<puerto-contenedor>.
Por ejemplo:
docker run -p 8080-8082:80-82 nginx
Esto hará que los puertos 80, 81 y 82 del contenedor sean proxy a los puertos 8080, 8081 y 8082 de su host, respectivamente. Una vez que inicie el contenedor con los puertos proxy, podrá acceder a ellos a través de los puertos de host especificados.