Docker

Docker

Tutorial Docker: Redes Docker

Docker redes networks: configuración. Aprende a configurar redes en Docker para conectar contenedores con ejemplos prácticos y detallados.

Las redes Docker facilitan la comunicación y el aislamiento entre contenedores, permitendo que los contenedores se comuniquen entre sí y con el mundo exterior de manera segura y eficiente

Docker proporciona varios drivers de red que permiten diferentes tipos de comunicación, incluyendo redes puente, redes superpuestas, y redes de host, entre otras.

Creación de redes Docker

Para crear una red Docker, se utiliza el comando docker network create

Este comando permite especificar el tipo de red y una serie de opciones de configuración. 

Por ejemplo, para crear una red de tipo puente, que es el tipo de red predeterminado y adecuado para la comunicación entre contenedores en el mismo host, se podría utilizar el siguiente comando:

docker network create --driver bridge mi_red_puente

Este comando crea una nueva red llamada mi_red_puente utilizando el driver de red puente.

Tipos de redes

Docker ofrece varios drivers de red que permiten configurar diferentes tipos de comunicación y aislamiento entre contenedores, así como entre contenedores y el mundo exterior.

Bridge (Puente)

Es el driver de red predeterminado en Docker. Una red de tipo puente permite que los contenedores conectados a ella se comuniquen entre sí y también con el host. Es adecuado para aplicaciones en desarrollo y pruebas en un solo host donde la comunicación entre contenedores es necesaria, ya que proporciona aislamiento de red entre contenedores en diferentes redes puente.

docker network create --driver bridge mi_red_puente

Host

Este driver elimina el aislamiento de red entre los contenedores y el host, utilizando directamente la red del host. Los contenedores que usan este driver pueden acceder a la red como si se ejecutaran directamente en el host. Es útil cuando se necesita un rendimiento de red máximo o cuando se desea exponer directamente los puertos de los contenedores al host sin necesidad de mapeo de puertos. Pero debe tenerse en cuenta que no hay aislamiento de red; el contenedor comparte la red del host.

No es común ni necesario crear explícitamente redes de tipo host, ya que simplemente se especifica --network="host" al ejecutar un contenedor para usar la red del host.

Overlay (Superpuesto)

Permite conectar múltiples Docker daemons y permite que los contenedores distribuidos entre diferentes hosts se comuniquen entre sí, creando una red distribuida entre múltiples hosts en un clúster de Docker. Es ideal para aplicaciones en producción distribuidas en múltiples hosts o desplegadas en un clúster de Docker Swarm. Proporciona aislamiento y comunicación segura entre contenedores en diferentes hosts.

docker network create --driver overlay mi_red_overlay

Macvlan

Permite asignar una dirección MAC a un contenedor, haciendo que aparezca como un dispositivo físico en la red. El contenedor tiene su propia dirección IP en la red física, lo que puede ser útil para casos donde se requiere que los contenedores se integren directamente en una red física existente. Proporciona un alto grado de integración con redes físicas existentes, pero puede ser más complejo de configurar.

docker network create --driver macvlan --subnet={subnet_ip}/24 --gateway={gateway_ip} -o parent=eth0 mi_red_macvlan

None

Este driver deshabilita la red para un contenedor. Es decir, el contenedor no tiene acceso a la red externa ni a otros contenedores. Se usa si un contenedor debe ejecutarse de forma aislada del resto del sistema. Ningún otro contenedor o servicio externo es accesible.

No es común ni necesario crear explícitamente redes de tipo none, ya que simplemente se especifica --network="none" al ejecutar un contenedor para aislarlo de la red.

Gestión de redes Docker

Una vez creadas, las redes Docker se pueden gestionar utilizando varios comandos:

  • docker network ls: Lista todas las redes disponibles en el sistema. Proporciona detalles como su ID, nombre y driver.
  • docker network inspect {nombre_de_red}: Proporciona información detallada sobre una red específica, incluyendo los contenedores que están conectados a ella y la configuración de IP.
  • docker network rm  {nombre_de_red}: Elimina una red. Si la red se elimina con éxito, no habrá salida. Si la red está en uso o hay algún otro problema, Docker devolverá un mensaje de error explicando la razón.

Ejemplo:

Conexión de contenedor a red Docker

Para conectar un contenedor a una red, se utiliza el comando docker run con la opción --network, especificando el nombre de la red a la que se desea conectar el contenedor. Por ejemplo:

docker run -d --name mi_contenedor --network mi_red_puente mi_imagen

Este comando crea un contenedor llamado mi_contenedor utilizando la imagen mi_imagen y lo conecta a la red mi_red_puente.

Certifícate en Docker con CertiDevs PLUS

Ejercicios de esta lección Redes Docker

Evalúa tus conocimientos de esta lección Redes Docker con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Docker

Accede a todas las lecciones de Docker y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Docker

Supera todos los ejercicios de programación del curso de Docker y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el papel de las redes Docker en la comunicación y el aislamiento entre contenedores.
  2. Aprender a crear redes Docker utilizando diferentes drivers de red según las necesidades de comunicación.
  3. Saber cómo gestionar las redes Docker, incluyendo la inspección y eliminación de redes existentes.
  4. Aprender a conectar contenedores a una red Docker específica.