CodeGym /Cursos /Docker SELF /Publicación de puertos de contenedores

Publicación de puertos de contenedores

Docker SELF
Nivel 17 , Lección 3
Disponible

4.1 Conceptos básicos de la publicación de puertos

La publicación de puertos de contenedores en Docker permite que los servicios que se ejecutan dentro de los contenedores estén disponibles desde una red externa o desde el host. Es una parte importante de la configuración de aplicaciones de múltiples contenedores, ya que permite interactuar con servicios como servidores web, bases de datos y otras aplicaciones de red. En esta lección, vamos a ver cómo publicar puertos de contenedores y configurar el acceso a los servicios.

Conceptos básicos de la publicación de puertos

  • Mapeo de puertos: correspondencia entre el puerto del host y el puerto del contenedor.
  • Parámetro -p/--publish: se utiliza para indicar el mapeo de puertos al iniciar un contenedor.
  • Parámetro -P/--publish-all: asignación automática de puertos del host para todos los puertos exportados del contenedor.

Ejemplo de uso del parámetro -p

Al iniciar un contenedor, puedes usar la opción -p para mapear un puerto del host a un puerto del contenedor. El formato del comando es:

Terminal

docker run -d -p <host_port>:<container_port> <image> 

Ejemplo 1: Publicación del puerto de un servidor web Nginx

Vamos a iniciar un contenedor con Nginx y publicar el puerto 80 del contenedor en el puerto 8080 del host.

Ahora Nginx estará disponible en http://localhost:8080.

Terminal

docker run -d -p 8080:80 --name mynginx nginx 

Ejemplo 2: Publicación de varios puertos

Puedes publicar múltiples puertos indicando varias opciones -p.

En este ejemplo, Nginx estará disponible por HTTP en el puerto 8080 y por HTTPS en el puerto 8443.

Terminal

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

Ejemplo de uso del parámetro -P

El parámetro -P publica automáticamente todos los puertos indicados en el Dockerfile o en la configuración del contenedor, en puertos aleatorios del host.

Ejemplo:

Terminal

docker run -d -P --name mynginx nginx 

Para averiguar qué puertos fueron asignados, usa el comando docker port:

Terminal

docker port mynginx

La salida será algo así:

Terminal

80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769

4.2 Publicación de puertos en Docker Compose

Para asignar puertos en Docker Compose usa la directiva ports en el archivo docker-compose.yml.

Ejemplo del archivo docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

Ejecuta Docker Compose:

Terminal

docker compose up -d 

Ahora Nginx estará disponible en las direcciones http://localhost:8080 y https://localhost:8443.

4.3 Parámetros adicionales para publicar puertos

1. Restricción de la dirección IP

Podés limitar el acceso al puerto del contenedor especificando la dirección IP del host.

Ejemplo:

En este ejemplo, Nginx solo estará disponible desde el host local en la dirección http://127.0.0.1:8080.

Terminal

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

2. Uso de un rango de puertos

Podés especificar un rango de puertos para publicar.

Ejemplo:

Terminal

docker run -d -p 8080-8081:80-81 --name mynginx nginx 

Consejos prácticos:

  • Publicar solo los puertos necesarios: Publicá solo los puertos que realmente sean necesarios para acceder a los servicios, para reducir posibles vulnerabilidades.
  • Uso de firewall: Configurá el firewall para restringir el acceso a los puertos publicados solo desde direcciones IP confiables.
  • Monitoreo y registro: Usá herramientas de monitoreo y registro para rastrear el acceso a los puertos publicados e identificar actividades sospechosas.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION