Exponer Puertos en Contenedores Docker
Al ejecutar aplicaciones en contenedores Docker, a menudo es necesario exponer puertos al sistema host para que los clientes externos puedan acceder a la aplicación en ejecución. De forma predeterminada, los contenedores Docker están aislados de la red host, y sus puertos internos no son accesibles desde fuera del contenedor.
Exposición de Puertos durante la Creación del Contenedor
Para exponer un puerto desde un contenedor Docker, puedes usar la bandera -p o --publish al crear un nuevo contenedor. La sintaxis para este comando es:
docker run -p <puerto_host>:<puerto_contenedor> <nombre_imagen>
Por ejemplo, para exponer el puerto 8080 del contenedor al puerto 8080 del sistema host, ejecutarías:
docker run -p 8080:8080 my-java-ee-app
Exposición de Múltiples Puertos
Puedes exponer múltiples puertos especificando la bandera -p varias veces:
docker run -p 8080:8080 -p 3306:3306 my-java-ee-app
Esto expondrá el puerto 8080 del contenedor al puerto 8080 del host, y el puerto 3306 del contenedor al puerto 3306 del host.
Enlazar a una Interfaz Host Específica
De forma predeterminada, Docker enlazará los puertos expuestos a todas las interfaces de red disponibles en el sistema host. Si deseas enlazar los puertos a una interfaz específica, puedes usar la siguiente sintaxis:
docker run -p <ip_host>:<puerto_host>:<puerto_contenedor> <nombre_imagen>
Por ejemplo, para enlazar el puerto 8080 de la interfaz 192.168.1.100 del host al puerto 8080 en el contenedor, ejecutarías:
docker run -p 192.168.1.100:8080:8080 my-java-ee-app
Al comprender cómo exponer puertos en contenedores Docker, puedes asegurar que tus aplicaciones Java EE que se ejecutan en contenedores sean accesibles para clientes externos.