Introducción

En este tema, exploraremos cómo Docker maneja las redes y cómo puedes configurar y gestionar redes para tus contenedores. La red es un componente crucial en cualquier aplicación distribuida, y Docker proporciona varias herramientas y opciones para facilitar la comunicación entre contenedores y con el mundo exterior.

Conceptos Clave

Antes de profundizar en los comandos y configuraciones, es importante entender algunos conceptos clave:

  • Bridge Network: Es la red predeterminada que Docker crea en el host. Los contenedores en esta red pueden comunicarse entre sí, pero no con el exterior a menos que se expongan puertos.
  • Host Network: Permite que un contenedor use la red del host directamente. Esto puede ser útil para aplicaciones que requieren un alto rendimiento de red.
  • Overlay Network: Utilizada principalmente en entornos de orquestación como Docker Swarm, permite la comunicación entre contenedores en diferentes hosts.
  • Macvlan Network: Permite asignar una dirección MAC a un contenedor, haciéndolo parecer un dispositivo físico en la red.
  • None Network: Desactiva la red para el contenedor.

Tipos de Redes en Docker

Docker ofrece varios tipos de redes que puedes utilizar según tus necesidades:

Tipo de Red Descripción
Bridge Red predeterminada para contenedores en un solo host.
Host Contenedor comparte la red del host.
Overlay Red para contenedores en múltiples hosts.
Macvlan Contenedor obtiene una dirección MAC en la red física.
None Contenedor sin red.

Comandos Básicos de Redes en Docker

Listar Redes

Para listar todas las redes disponibles en tu entorno Docker, usa el siguiente comando:

docker network ls

Crear una Red

Puedes crear una red personalizada usando el comando docker network create. Por ejemplo, para crear una red de tipo bridge:

docker network create my_bridge_network

Inspeccionar una Red

Para obtener detalles sobre una red específica, usa el comando docker network inspect seguido del nombre de la red:

docker network inspect my_bridge_network

Conectar un Contenedor a una Red

Para conectar un contenedor a una red específica, usa el comando docker network connect:

docker network connect my_bridge_network my_container

Desconectar un Contenedor de una Red

Para desconectar un contenedor de una red, usa el comando docker network disconnect:

docker network disconnect my_bridge_network my_container

Ejemplo Práctico

Vamos a crear una red personalizada y conectar dos contenedores a esta red para que puedan comunicarse entre sí.

Paso 1: Crear una Red

docker network create my_custom_network

Paso 2: Ejecutar Contenedores en la Nueva Red

docker run -d --name container1 --network my_custom_network nginx
docker run -d --name container2 --network my_custom_network nginx

Paso 3: Verificar la Conectividad

Para verificar que los contenedores pueden comunicarse entre sí, puedes usar el comando docker exec para entrar en uno de los contenedores y hacer ping al otro:

docker exec -it container1 ping container2

Ejercicio Práctico

Ejercicio 1: Crear y Conectar Redes

  1. Crea una red de tipo bridge llamada test_network.
  2. Ejecuta dos contenedores de Nginx en esta red.
  3. Verifica que los contenedores pueden comunicarse entre sí.

Solución

  1. Crear la red:

    docker network create test_network
    
  2. Ejecutar los contenedores:

    docker run -d --name nginx1 --network test_network nginx
    docker run -d --name nginx2 --network test_network nginx
    
  3. Verificar la conectividad:

    docker exec -it nginx1 ping nginx2
    

Conclusión

En esta sección, hemos cubierto los conceptos básicos de las redes en Docker, los tipos de redes disponibles y cómo gestionar redes y contenedores. La capacidad de configurar y gestionar redes es fundamental para construir aplicaciones distribuidas y escalables. En el próximo módulo, profundizaremos en la persistencia de datos con volúmenes en Docker.

© Copyright 2024. Todos los derechos reservados