En este módulo, profundizaremos en el funcionamiento de las redes en Docker. Entender cómo Docker maneja las redes es crucial para crear aplicaciones distribuidas y escalables. Exploraremos los diferentes tipos de redes que Docker ofrece, cómo configurarlas y cómo solucionar problemas comunes.

Conceptos Clave

  1. Tipos de Redes en Docker:

    • Bridge: Red predeterminada para contenedores en un solo host.
    • Host: Contenedores comparten la red del host.
    • Overlay: Redes que abarcan múltiples hosts, útiles para orquestación.
    • Macvlan: Asigna una dirección MAC a cada contenedor para que aparezca como un dispositivo físico en la red.
    • None: Desactiva la red para el contenedor.
  2. Componentes de Red en Docker:

    • Driver de Red: Mecanismo que Docker usa para gestionar la red.
    • Subred y Gateway: Configuración de IP para la red.
    • DNS: Resolución de nombres dentro de la red Docker.

Tipos de Redes en Detalle

Bridge Network

La red bridge es la red predeterminada que Docker crea en cada host. Es útil para la comunicación entre contenedores en el mismo host.

# Crear una red bridge personalizada
docker network create --driver bridge my_bridge_network

# Ejecutar un contenedor en la red bridge personalizada
docker run -d --name my_container --network my_bridge_network nginx

Host Network

La red host permite que un contenedor comparta la red del host. Esto puede ser útil para aplicaciones que requieren acceso directo a la red del host.

# Ejecutar un contenedor usando la red host
docker run -d --name my_host_container --network host nginx

Overlay Network

La red overlay permite la comunicación entre contenedores en diferentes hosts, ideal para entornos de orquestación como Docker Swarm.

# Crear una red overlay (requiere un swarm)
docker network create --driver overlay my_overlay_network

# Ejecutar un contenedor en la red overlay
docker service create --name my_service --network my_overlay_network nginx

Macvlan Network

La red macvlan asigna una dirección MAC a cada contenedor, haciéndolo parecer un dispositivo físico en la red.

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

# Ejecutar un contenedor en la red macvlan
docker run -d --name my_macvlan_container --network my_macvlan_network nginx

None Network

La red none desactiva la red para el contenedor, útil para tareas que no requieren conectividad de red.

# Ejecutar un contenedor sin red
docker run -d --name my_none_container --network none nginx

Configuración Avanzada

Subred y Gateway

Al crear una red, puedes especificar la subred y el gateway para tener un control más granular sobre la configuración de IP.

docker network create --driver bridge \
  --subnet 192.168.10.0/24 \
  --gateway 192.168.10.1 \
  my_custom_network

DNS en Docker

Docker permite configurar servidores DNS personalizados para contenedores.

# Ejecutar un contenedor con un servidor DNS personalizado
docker run -d --name my_dns_container --dns 8.8.8.8 nginx

Ejercicios Prácticos

Ejercicio 1: Crear y Usar una Red Bridge Personalizada

  1. Crea una red bridge personalizada llamada custom_bridge.
  2. Ejecuta dos contenedores nginx en esta red.
  3. Verifica que los contenedores pueden comunicarse entre sí.
# Solución
docker network create --driver bridge custom_bridge
docker run -d --name nginx1 --network custom_bridge nginx
docker run -d --name nginx2 --network custom_bridge nginx
docker exec -it nginx1 ping nginx2

Ejercicio 2: Configurar una Red Overlay

  1. Inicia un swarm.
  2. Crea una red overlay llamada custom_overlay.
  3. Despliega un servicio nginx en esta red.
# Solución
docker swarm init
docker network create --driver overlay custom_overlay
docker service create --name nginx_service --network custom_overlay nginx

Errores Comunes y Soluciones

  1. Error: "network not found":

    • Asegúrate de que la red especificada existe.
    • Usa docker network ls para listar las redes disponibles.
  2. Error: "address already in use":

    • Verifica que la subred y el gateway no están en conflicto con otras redes.
    • Usa docker network inspect para revisar la configuración de las redes existentes.

Conclusión

En esta sección, hemos explorado en profundidad las redes en Docker, incluyendo los diferentes tipos de redes y cómo configurarlas. Comprender estos conceptos es esencial para diseñar aplicaciones distribuidas y escalables. En el próximo módulo, nos enfocaremos en las opciones de almacenamiento en Docker, un componente crucial para la persistencia de datos en contenedores.

© Copyright 2024. Todos los derechos reservados