CodeGym /Cursos /Docker SELF /Uso de redes personalizadas

Uso de redes personalizadas

Docker SELF
Nivel 17 , Lección 4
Disponible

5.1 Tipos principales de redes personalizadas

Las redes personalizadas en Docker ofrecen opciones flexibles para configurar y gestionar la interacción de red entre contenedores. Estas permiten aislar los contenedores, organizar su interacción y crear topologías de red complejas. En esta lección vamos a revisar cómo crear y configurar redes personalizadas en Docker, así como ejemplos de su uso.

Tipos principales de redes personalizadas

Docker soporta varios tipos de redes personalizadas, cada una con sus propias características y destinada a diferentes escenarios de uso:

  1. Bridge (redes puente): proporcionan aislamiento y conexión entre contenedores en un mismo host. Este tipo de red se usa de forma predeterminada para aplicaciones locales que no necesitan interacción fuera del host.
  2. Overlay (redes overlay): están diseñadas para conectar contenedores que operan en diferentes hosts dentro de un clúster de Docker Swarm o Kubernetes. Ofrecen alta escalabilidad y seguridad para aplicaciones distribuidas.
  3. Macvlan: permiten que los contenedores usen directamente la interfaz de red física del host. Esto es útil para aplicaciones de red con altos requisitos de rendimiento, así como para casos en los que se necesita un enlace a direcciones MAC específicas. Los contenedores en una red Macvlan pueden interactuar con otros dispositivos en la red física como si fueran nodos independientes.
  4. Host (redes host): los contenedores utilizan el stack de red del host, lo que elimina el sobrecoste de la virtualización de la red pero reduce el aislamiento. Este tipo de red es adecuado para aplicaciones que requieren el máximo rendimiento de red.

5.2 Creación y uso de redes bridge

Las redes bridge son el tipo más común de redes personalizadas y se utilizan para aislar contenedores en un mismo host. Los contenedores conectados a la misma red bridge pueden interactuar entre ellos mediante direcciones IP y nombres de host.

Creación de una red bridge personalizada

Para crear una red bridge personalizada usa el comando docker network create:

Terminal

docker network create --driver bridge my_bridge_network

Iniciar contenedores en una red personalizada

Inicia los contenedores conectándolos a la red creada:

Terminal

docker run -d --name container1 --network my_bridge_network nginx

docker run -d --name container2 --network my_bridge_network busybox sleep 1000

Comprobación de conexión entre contenedores

Puedes usar el comando ping para comprobar la conexión entre los contenedores:

Terminal

docker exec container2 ping -c 4 container1

Si los contenedores están correctamente conectados a la red my_bridge_network, el comando ping será exitoso.

5.3 Redes personalizadas en Docker Compose

Ejemplos de uso de redes personalizadas en Docker Compose

Docker Compose facilita la creación y gestión de redes para aplicaciones multicontenedor. Puedes definir redes personalizadas en el archivo docker-compose.yml.

Ejemplo del archivo docker-compose.yml:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_bridge_network

  app:
    image: myapp:latest
    networks:
      - my_bridge_network

networks:
  my_bridge_network:
    driver: bridge

Ejecuta Docker Compose:

Terminal

docker compose up -d

En este ejemplo, ambos servicios (web y app) están conectados a la red personalizada my_bridge_network.

5.4 Configuración y uso de redes macvlan

Las redes macvlan permiten a los contenedores usar directamente la interfaz de red física del host, lo que puede ser útil para aplicaciones con altos requisitos de rendimiento de red. Los contenedores en esta red obtienen sus propias direcciones IP dentro de la subred especificada, lo que los hace visibles en la misma red que el host.

Crear una red macvlan

Terminal

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my_macvlan_network

En este comando:

  • --subnet: define la subred en la que estarán los contenedores.
  • --gateway: establece la puerta de enlace para los contenedores.
  • -o parent: especifica la interfaz de red del host a la que se conecta la red.

Ejecutar contenedores en una red macvlan

Terminal

docker run -d --name container1 --network my_macvlan_network nginx

docker run -d --name container2 --network my_macvlan_network busybox sleep 1000

En este ejemplo, ambos contenedores están conectados a la red my_macvlan_network y tienen acceso a la red externa a través de la interfaz física eth0.

5.5 Ejemplos de uso en Docker Compose

También puedes usar redes macvlan en Docker Compose. Por ejemplo:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_macvlan_network
        
networks:
  my_macvlan_network:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

Inicia Docker Compose:

Terminal

docker compose up -d

En este ejemplo, la red my_macvlan_network permite al servicio web interactuar con los dispositivos en la subred 192.168.1.0/24, incluyendo el host.

Recomendaciones prácticas:

  • Configuración del acceso: Asegúrate de que tu router o el administrador de red permita el uso de la subred especificada en la configuración de macvlan.
  • Aislamiento: Si la seguridad es importante, usa VLAN para segmentar la red, de modo que los contenedores tengan acceso solo a los recursos necesarios.
  • Pruebas: Después de la configuración, verifica la comunicación entre los contenedores y la red externa usando comandos como ping o curl.

5.6 Ejemplo de uso de redes para microservicios

Vamos a ver un ejemplo, donde tenemos frontend, backend y una base de datos, que están aislados en redes diferentes, pero al mismo tiempo interactúan a través de la intersección de redes.

Archivo docker-compose.yml

Yaml

version: '3.8'

services:
  frontend:
    image: myfrontend:latest
    networks:
      - front-tier
      - back-tier
        
  backend:
    image: mybackend:latest
    networks:
      - back-tier
      - db-tier
        
  database:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    networks:
      - db-tier
        
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
  db-tier:
    driver: bridge

Ejecuta Docker Compose:

Terminal

docker compose up -d 

En este ejemplo:

  • El servicio frontend está conectado a las redes front-tier y back-tier, lo que le permite interactuar tanto con clientes externos como con el backend.
  • El servicio backend está conectado a las redes back-tier y db-tier, lo que le permite interactuar tanto con el frontend como con la base de datos.
  • El servicio database está conectado solo a la red db-tier, lo que garantiza el aislamiento de la base de datos del acceso exterior.

Recomendaciones prácticas:

  • Usa aislamiento: La separación de redes ayuda a restringir el acceso de los servicios a bases de datos u otros recursos críticos.
  • Verificación de conexión: Asegúrate de que los servicios puedan interactuar entre sí a través de redes compartidas usando comandos como ping o curl.
  • Optimización: Usa una red overlay si tu proyecto implica trabajar en un clúster o en múltiples hosts.

Este ejemplo muestra cómo crear aislamiento de red y al mismo tiempo garantizar la interacción entre diferentes niveles de una aplicación.

1
Опрос
Configuración de redes en Docker,  17 уровень,  4 лекция
недоступен
Configuración de redes en Docker
Configuración de redes en Docker
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION