Cómo conectar contenedores a una red Docker personalizada

DockerBeginner
Practicar Ahora

Introducción

Docker es una herramienta poderosa para la creación de contenedores de aplicaciones, pero gestionar la conectividad de red entre los contenedores puede ser un desafío. En este tutorial, aprenderás a crear una red Docker personalizada y conectar tus contenedores a ella, permitiéndoles comunicarse de forma segura y eficiente.

Introducción a las Redes Docker

Las redes Docker son un componente crucial del ecosistema Docker, que permite a los contenedores comunicarse entre sí y con el mundo exterior. En el contexto de Docker, una red es una red virtual que permite a los contenedores conectarse e intercambiar datos. Docker proporciona varios controladores de red integrados, cada uno con su propio conjunto de características y casos de uso.

Los controladores de red Docker más utilizados son:

  1. Red Puente (Bridge Network): El controlador de red predeterminado en Docker, que crea un puente virtual en la máquina host y permite que los contenedores se comuniquen entre sí y con la máquina host.
  2. Red Anfitrión (Host Network): Este modo de red permite a un contenedor utilizar la pila de red del host, eliminando efectivamente el aislamiento de red entre el contenedor y el host.
  3. Red Overlay: Este controlador de red se utiliza para la red multi-host, permitiendo que los contenedores que se ejecutan en diferentes hosts Docker se comuniquen entre sí.
  4. Red Macvlan: Este controlador de red te permite asignar una dirección MAC a un contenedor, haciéndolo aparecer como un dispositivo físico en la red.

Comprender estos controladores de red y sus casos de uso es crucial para gestionar y conectar eficazmente los contenedores en un entorno Docker.

graph LR A[Host Docker] --> B[Red Puente] B --> C[Contenedor 1] B --> D[Contenedor 2] B --> E[Contenedor 3]

Tabla 1: Controladores de Red Docker Comunes

Controlador Descripción
Puente El controlador de red predeterminado, que crea un puente virtual en la máquina host.
Anfitrión Permite a un contenedor utilizar la pila de red del host, eliminando el aislamiento de red.
Overlay Permite la red multi-host, permitiendo que los contenedores en diferentes hosts Docker se comuniquen.
Macvlan Asigna una dirección MAC a un contenedor, haciéndolo aparecer como un dispositivo físico en la red.

Al comprender los diferentes controladores de red y sus casos de uso, puedes conectar y gestionar eficazmente tus contenedores en un entorno Docker.

Creación de una Red Docker Personalizada

Además de los controladores de red predeterminados proporcionados por Docker, también puedes crear tus propias redes Docker personalizadas para satisfacer tus necesidades específicas. La creación de una red personalizada te permite tener más control sobre la configuración de la red y el aislamiento entre tus contenedores.

Creación de una Red Puente Personalizada

Para crear una red puente personalizada, puedes usar el comando docker network create. Aquí hay un ejemplo:

docker network create my-custom-network

Este comando crea una nueva red puente llamada my-custom-network. Luego puedes inspeccionar la red usando el comando docker network inspect:

docker network inspect my-custom-network

La salida proporcionará detalles sobre la red, como la subred, la puerta de enlace y la lista de contenedores conectados a la red.

Configuración de una Red Puente Personalizada

Al crear una red puente personalizada, también puedes especificar opciones de configuración adicionales, como la subred y la puerta de enlace. Aquí hay un ejemplo:

docker network create --subnet 172.18.0.0/16 --gateway 172.18.0.1 my-custom-network

Este comando crea una red puente personalizada con una subred de 172.18.0.0/16 y una puerta de enlace de 172.18.0.1.

Conexión de Contenedores a una Red Personalizada

Una vez que has creado una red personalizada, puedes conectar contenedores a ella usando la opción --network al iniciar un nuevo contenedor. Aquí hay un ejemplo:

docker run -d --name my-app --network my-custom-network nginx

Este comando inicia un nuevo contenedor Nginx y lo conecta a la red personalizada my-custom-network.

Al crear y usar redes Docker personalizadas, puedes mejorar el aislamiento y la seguridad de tus contenedores, así como simplificar la gestión de las tareas relacionadas con la red.

Conexión de Contenedores a una Red Personalizada

Ahora que has creado una red Docker personalizada, exploremos cómo conectar contenedores a ella.

Conexión de Contenedores Durante la Creación

Al iniciar un nuevo contenedor, puedes especificar la red a la que debe conectarse usando la opción --network. Aquí hay un ejemplo:

docker run -d --name my-app --network my-custom-network nginx

Este comando inicia un nuevo contenedor Nginx y lo conecta a la red personalizada my-custom-network.

Conexión de Contenedores Existentes

También puedes conectar contenedores existentes a una red personalizada usando el comando docker network connect. Aquí hay un ejemplo:

docker run -d --name my-db mysql
docker network connect my-custom-network my-db

Este comando primero inicia un nuevo contenedor MySQL y luego conecta el contenedor my-db a la red personalizada my-custom-network.

Verificación de la Conectividad de los Contenedores

Para verificar que los contenedores están conectados a la red personalizada, puedes usar el comando docker network inspect:

docker network inspect my-custom-network

La salida mostrará la lista de contenedores conectados a la red, así como sus direcciones IP dentro de la red personalizada.

También puedes probar la conectividad entre los contenedores usando los nombres de los contenedores o las direcciones IP dentro de la red personalizada. Por ejemplo, puedes usar ping desde un contenedor a otro:

docker exec my-app ping my-db

Este comando enviará un ping al contenedor my-db desde el contenedor my-app, usando el nombre del contenedor como nombre de host.

Al conectar contenedores a una red Docker personalizada, puedes mejorar el aislamiento y la seguridad de tu aplicación, así como simplificar la gestión de las tareas relacionadas con la red.

Resumen

Al finalizar este tutorial, tendrás una comprensión sólida de cómo crear una red Docker personalizada y conectar tus contenedores a ella. Este conocimiento te ayudará a construir aplicaciones Docker más robustas y escalables, donde los contenedores puedan comunicarse fácilmente entre sí y con servicios externos.