CodeGym /Cursos /Docker SELF /Redirección de puertos

Redirección de puertos

Docker SELF
Nivel 12 , Lección 1
Disponible

7.1 Conceptos básicos de redirección de puertos (Port forvarding)

La redirección de puertos es una función importante de Docker, que permite que las aplicaciones dentro de los contenedores sean accesibles desde el exterior. Esta función es necesaria para conectarte a servidores web, bases de datos u otros servicios que se ejecutan en contenedores, desde la máquina anfitriona o incluso otras redes.

Por defecto, los contenedores funcionan en una red aislada. Para que el servicio en un contenedor sea accesible, Docker redirige los puertos del contenedor a los puertos de la máquina anfitriona.

Para la redirección de puertos, se utiliza el parámetro -p o --publish del comando docker run.

Sintaxis


docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]

Dónde:

  • HOST_PORT: el puerto en la máquina anfitriona por el cual pasará el tráfico.
  • CONTAINER_PORT: el puerto dentro del contenedor al que se redirigirá el tráfico.
  • OPTIONS: parámetros adicionales para configurar el contenedor.
  • IMAGE: la imagen a partir de la cual se crea el contenedor.
  • COMMAND: el comando que se ejecuta dentro del contenedor.
  • ARG...: argumentos para el comando.

Ejemplo de uso básico

En este ejemplo, el puerto 80 del contenedor, donde se ejecuta el servidor web Nginx, se redirige al puerto 8080 de la máquina anfitriona. Después de esto, podrás abrir el servidor web en un navegador en la dirección http://localhost:8080.


docker run -d -p 8080:80 nginx

7.2 Otras opciones para la redirección de puertos

1. Redirección múltiple de puertos

Docker te permite redirigir múltiples puertos a la vez. Para eso, puedes usar varias opciones -p.

Ejemplo

En este ejemplo, el puerto 80 del contenedor se redirige al puerto 8080 del host, y el puerto 443 del contenedor se redirige al puerto 8443 del host.



docker run -d -p 8080:80 -p 8443:443 nginx

2. Redirección de puertos especificando una dirección IP

Puedes especificar una dirección IP concreta a la que estará vinculado el puerto redirigido. Esto es súper útil si la máquina host tiene múltiples interfaces de red y necesitas restringir el acceso al contenedor.

Ejemplo:

En este ejemplo, el puerto 80 del contenedor se redirige al puerto 8080 solo en la interfaz 127.0.0.1 del host. Esto significa que el acceso al servicio será posible únicamente desde la propia máquina host.


docker run -d -p 127.0.0.1:8080:80 nginx

3. Redirección de un rango de puertos

Si necesitas redirigir varios puertos a la vez, Docker soporta el uso de rangos.

Ejemplo:

En este ejemplo, los puertos desde 7000 hasta 8000 del contenedor se redirigen a los puertos desde 7000 hasta 8000 en la máquina host.


docker run -d -p 7000-8000:7000-8000 someimage

7.3 Escenarios prácticos de uso

1. Acceso al servidor web

La redirección de puertos se utiliza con mayor frecuencia para proporcionar acceso a servidores web que se ejecutan dentro de contenedores.


docker run -d -p 8080:80 nginx 

Después de ejecutar este comando, el servidor web Nginx, que opera en el puerto 80 del contenedor, será accesible en el puerto 8080 de la máquina host.

2. Acceso a la base de datos

La redirección de puertos también es útil para acceder a bases de datos que se ejecutan en contenedores.


docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres

En este ejemplo, PostgreSQL, que opera en el puerto 5432 del contenedor, será accesible en el puerto 5432 de la máquina host.

3. Pruebas y desarrollo

Los contenedores Docker a menudo se utilizan para crear entornos de prueba aislados. La redirección de puertos permite a los desarrolladores ejecutar y probar aplicaciones como si estuvieran funcionando en condiciones reales.


docker run -d -p 8080:80 -p 8443:443 myapp

En este ejemplo, la aplicación se prueba en los puertos 8080 y 8443, que corresponden a los puertos estándar utilizados en el entorno de producción.

7.4 Recomendaciones adicionales

1. Protección de puertos

Cuando redirijas puertos, no te olvides de la seguridad. Los puertos abiertos pueden ser un objetivo para ataques. Redirige solo los puertos que realmente necesitas y utiliza un firewall para limitar el acceso.

2. Firewalls y NAT

Para aumentar la seguridad y gestionar el tráfico, usa firewalls y Network Address Translation (NAT). Esto te permitirá restringir el acceso a tus servicios y controlar las conexiones de red.

3. Monitoreo y logs

Configura el monitoreo y la recopilación de logs para seguir el tráfico en los puertos redirigidos. Esto te ayudará a detectar y reaccionar más rápido ante actividades sospechosas.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION