Ir al contenido principal

Dominar las redes de Docker: Desde puentes personalizados hasta arquitecturas preparadas para enjambres

Una guía práctica completa sobre las redes Docker, que incluye controladores de red, gestión de IP, configuración de superposición Swarm y ajuste del rendimiento para sistemas contenedorizados escalables y seguros.
Actualizado 16 jul 2025  · 12 min de lectura

La creación de redes es un concepto fundamental de las aplicaciones en contenedores. Permite una comunicación fluida entre todos los contenedores, sistemas host y servicios externos. Las funciones de red integradas de Docker son esenciales para aislar servicios de forma eficaz, proteger el flujo de datos y coordinar arquitecturas de microservicios escalables.

Una de las herramientas más potentes en este contexto es el comando Docker network create, que permite a los ingenieros y programadores de DevOps definir redes personalizadas adaptadas a las necesidades de sus aplicaciones.

Por eso, hoy te explicaré paso a paso cómo crear y gestionar estas redes Docker de forma eficaz. 

Si eres nuevo en Docker, no te pierdas nuestro programa de habilidades sobre Contenedorización y virtualización con Docker y Kubernetes para adquirir experiencia práctica.

¿Qué es la red Docker?

La creación de aplicaciones modernas suele implicar el uso de varios servicios en contenedores individuales y aislados. La red de Docker proporciona una forma flexible y potente de conectar esos contenedores entre sí y con sistemas externos, a través del modelo de red que elijas, independientemente de la infraestructura subyacente.

En esta sección se proporcionan conocimientos básicos sobre las redes de Docker, que son un componente clave de Docker, y se explica cómo evaluar qué configuración de red se adapta mejor a las necesidades de tu aplicación. Pero antes de empezar, si eres totalmente nuevo en Docker, te recomiendo encarecidamente que eches un vistazo a Introducción a Docker para adquirir una base sólida antes de profundizar en las redes de Docker.

Controladores de red: la base de las redes de Docker

Docker utiliza controladores de red para especificar cómo se conectan y comunican los contenedores. Cada controlador define cómo gestionará la red de contenedores. Como resultado, existen distintos niveles de rendimiento, aislamiento y complejidad para cada uno de los principales controladores de red de Docker.

Descripción general de los controladores de red principales de Docker

Estos son los principales controladores integrados que admite Docker:

  1. : El controlador predeterminado para contenedores independientes. Crea una red interna aislada en el host, lo que permite a los contenedores comunicarse entre sí utilizando direcciones IP o nombres de contenedores. Ideal para el desarrollo y las pruebas en un único host.
  2. Presentador: Elimina el aislamiento compartiendo la pila de red del host. El contenedor utiliza directamente la IP y los puertos del host. Útil para aplicaciones de alto rendimiento o compatibilidad con servicios a nivel de host.
  3. Ninguno: Desactiva todas las conexiones de red del contenedor. Solo hay disponible una interfaz de bucle invertido. Ideal para contenedores que no necesitan conectividad externa ni requieren un aislamiento de seguridad estricto.
  4. Superposición: Permite la comunicación entre contenedores en diferentes hosts Docker. Se utiliza habitualmente en Docker Swarm y en implementaciones con varios hosts. Crea una red distribuida que abstrae la infraestructura física subyacente.
  5. Macvlan: Asigna una dirección MAC única a cada contenedor, haciendo que aparezca como un dispositivo físico en la red. Adecuado para aplicaciones heredadas que requieren acceso directo a la red física.
  6. : IPvlan Similar a macvlan, pero enrutas el tráfico en la capa IP en lugar de utilizar direcciones MAC. Ofrece un mejor rendimiento y control en entornos de alta densidad.

Cada controlador influye en la forma en que los contenedores interactúan entre sí, con el host y con las redes externas. 

¿Tienes curiosidad por saber cómo funcionan juntos estos tipos de redes? Nuestro curso Docker intermedio cubre en detalle práctico las redes, los volúmenes y Compose de Docker. Comprender estas diferencias es fundamental para diseñar arquitecturas seguras y eficaces.

¿Qué tipo de red debo utilizar?

La elección del controlador de red adecuado depende de la arquitectura de tu aplicación y de tus objetivos operativos:

  1. : Recomendado para la mayoría de los escenarios de desarrollo local y aplicaciones sencillas con varios contenedores en un único host. Ofrece un equilibrio entre aislamiento y facilidad de uso.
  2. Presentador: Ideal cuando los contenedores deben conectarse directamente a la red del host, como cuando se exponen servicios en puertos estándar (por ejemplo, el puerto 80 o 443). Ten cuidado con la seguridad y los conflictos de puertos.
  3. Ninguno: Ideal para cargas de trabajo en entornos aislados o tareas críticas para la seguridad que no deben tener acceso a la red. Común en flujos de trabajo automatizados o pruebas.
  4. Superposición: Esencial en entornos agrupados como Docker Swarm o Kubernetes, donde los contenedores se extienden por varios hosts. Permite el escalado horizontal y la detección de servicios.
  5. Macvlan: Preferible cuando los contenedores deben comportarse como dispositivos físicos en la LAN. Se utiliza en casos como el rastreo de redes, la integración de sistemas heredados o cuando se omite la pila de red de Docker.
  6. : IPvlan Ofrece un control granular y un mejor rendimiento que macvlan para entornos con requisitos de red estrictos, como los sistemas financieros o de telecomunicaciones.

Ten en cuenta factores como la topología del host, las necesidades de seguridad y la estrategia de escalabilidad al elegir un controlador de red. 

¿Aún no has decidido qué red se adapta mejor a tu carga de trabajo? Descubre cómo se compara Docker con Kubernetes en implementaciones reales con este guía Kubernetes vs Docker.

Creación de redes Docker personalizadas

Las redes Docker personalizadas te permiten controlar cómo se comunican los contenedores entre sí, así como con sistemas externos, lo que puede ayudarte a aislar mejor los servicios, asignarles direcciones IP predecibles o diseñar tu arquitectura para optimizar el rendimiento o la seguridad. 

En esta sección se describen los conceptos básicos y las funciones más avanzadas del proceso de creación de redes Docker personalizadas, incluidos los comandos y las configuraciones de IP personalizadas.

Estructura básica de los comandos

Para crear una red personalizada, utiliza el comandodocker network create. Esto te permite definir el controlador de red, la subred y otras opciones para controlar mejor la comunicación entre contenedores.

Aquí tienes un ejemplo sencillo utilizando el puente predeterminado bridge :

$ docker network create demo-network -d bridge

Este comando crea una red puente denominada demo-network. Docker devuelve un ID de red único como confirmación. En este punto, la red existe, pero aún no conecta ningún contenedor.

Puedes ver las redes existentes con:

$ docker network ls

Para conectar un contenedor a tu nueva red, utiliza el indicador --network:

$ docker run -it --rm --name container1 --network demo-network busybox:latest

Para añadir un contenedor existente a una red:

$ docker network connect demo-network container2

Y para eliminarlo:

$ docker network disconnect demo-network container2

Por último, cuando ya no necesites la red, puedes eliminarla:

$ docker network rm demo-network

Para limpiar todas las redes que no se utilizan:

$ docker network prune

Gestión avanzada de direcciones IP

Cuando trabajas con sistemas más grandes o políticas de red específicas, Docker te permite gestionar manualmente los rangos de direcciones IP dentro de redes personalizadas.

Puedes definir una subred y una puerta de enlace utilizando los indicadores --subnet y --gateway:

$ docker network create \
  --driver bridge \
  --subnet 192.168.100.0/24 \
  --gateway 192.168.100.1 \
  custom-network

Para un control aún mayor, utiliza:

  • --ip-range: Asigna un grupo de direcciones IP del que los contenedores puedan obtener direcciones de forma dinámica, separado del rango completo de la subred.
  • --aux-address: Reserva direcciones IP específicas dentro de la subred para sistemas externos o fines de documentación.

Por ejemplo: 

$ docker network create \
  --driver bridge \
  --subnet 192.168.200.0/24 \
  --ip-range 192.168.200.128/25 \
  --aux-address reserved=192.168.200.254 \
  advanced-network

Esta configuración:

  • Limita las direcciones IP dinámicas de los contenedores a la mitad superior de la subred.
  • Evita colisiones con una IP reservada.
  • Garantiza un comportamiento de red coherente en entornos complejos.

Si necesitas más ejemplos guiados, puedes explorar estrategias de configuración avanzadas en 10 ideas para proyectos con Docker: De principiante a avanzado.

Redes en modo enjambre

El modo Docker Swarm permite la implementación coordinada de servicios en un clúster de hosts Docker. Una parte fundamental de esta coordinación es la creación de redes, que garantiza que los servicios que se ejecutan en diferentes nodos puedan comunicarse entre sí de forma fluida y segura.

Arquitecturas de red con reconocimiento de enjambres

Docker Swarm es la solución de clustering nativa de Docker que convierte un grupo de hosts Docker en un único motor virtual. Te permite implementar y gestionar contenedores como servicios distribuidos. Una de sus principales ventajas es la conexión en red con múltiples hosts, lo que permite que los servicios de diferentes máquinas se comuniquen como si estuvieran en el mismo host.

Las redes en enjambre admiten dos tipos principales de tráfico:

  • Tráfico del plano de control: comunicación de gestión cifrada entre nodos Docker.
  • Tráfico del plano de datos: comunicación entre contenedores y acceso a servicios externos.

Swarm utiliza redes superpuestas para admitir la comunicación entre servicios de nodos y una malla de enrutamiento para equilibrar la carga del tráfico externo entre las réplicas de servicios.

Creación de redes en enjambre

Para admitir la detección de servicios y garantizar la comunicación entre varios hosts, Docker Swarm utiliza redes superpuestas con un ámbito de swarm. Estos pueden crearse manualmente o automáticamente cuando se inician los servicios.

A continuación se explica cómo crear una red de superposición con ámbito de enjambre:

$ docker network create \
  --driver overlay \
  --scope swarm \
  my-overlay

Esta red no se limita a un único host; cualquier nodo que participe en el enjambre puede conectar contenedores a ella. Puedes inspeccionarlo utilizando:

$ docker network inspect my-overlay

Personalización de redes superpuestas

Las redes superpuestas admiten configuraciones avanzadas, tales como:

$ docker network create \
  --driver overlay \
  --subnet 10.0.9.0/24 \
  --gateway 10.0.9.99 \
  --opt encrypted \
  my-secure-overlay
  • --subnet --gateway definen la topología de la red.
  • --opt encrypted habilita el cifrado IPSEC para el tráfico de contenedores.
  • --scope swarm se aplica automáticamente con el controlador de superposición en modo enjambre.

Comprensión de los indicadores --scope y --attachable

  • --scope swarm: Indica que la red está disponible en todos los nodos del enjambre. Solo los servicios en clúster (no los contenedores independientes) pueden utilizar esta red, a menos que se especifique --attachable.
  • --attachable: Permite que los contenedores independientes se unan a una red con ámbito de enjambre. Útil para depuración o acceso temporal a contenedores.

Por ejemplo: 

$ docker network create \
  --driver overlay \
  --attachable \
  my-dev-overlay

Esto te permite conectar contenedores normales a una red en enjambre, además de servicios.

Configuración y validación de la red

Debes asegurarte de que tus redes Docker estén configuradas correctamente para que los contenedores se comuniquen entre sí de forma adecuada, proporcionar la seguridad necesaria y garantizar el rendimiento de los servicios. Docker cuenta con varias herramientas y comandos para revisar, solucionar problemas y validar tus configuraciones de red.

Verificación de la configuración de red

Para examinar los detalles de configuración de cualquier red Docker, utiliza el comando docker network inspect.  Recibirás un archivo JSON detallado que incluye:

  • Controlador de red (bridge, overlay, etc.)
  • Configuración de subred y puerta de enlace
  • Ámbito de aplicación (local, swarm)
  • Contenedores conectados y sus direcciones IP
  • Acceso interno o externo
  • Opciones específicas del controlador (por ejemplo, ID de VXLAN para redes superpuestas)

Por ejemplo, podrías hacer algo como esto:

$ docker network inspect my-network

Busca campos clave como:

  • «Conductor»: Asegura que se ha creado el tipo de red deseado.
  • «IPAM»: Confirma la configuración de gestión de direcciones IP, incluidas las subredes o puertas de enlace personalizadas.
  • «Contenedores»: Muestra los contenedores conectados y sus direcciones IP asignadas.
  • «Opciones»: Muestra configuraciones avanzadas como el cifrado (cifrado: verdadero) o el tamaño MTU.

Técnicas de validación

Para confirmar que tu red funciona correctamente:

  1. Primero debes verificar la configuración de IPAM. Comprueba la sección «IPAM» en la salida de inspección de la red de Docker. Asegúrate de que la subred y la puerta de enlace coincidan con la configuración deseada. Las subredes mal configuradas pueden provocar problemas de conectividad o conflictos de IP.
  2. A continuación, debes comprobar los identificadores VXLAN (solo superposición). Las redes de superposición utilizan VXLAN para encapsular el tráfico de contenedores entre varios hosts. Revisa la sección «Opciones» en busca de claves como:
"com.docker.network.driver.overlay.vxlanid_list": "4097"

Esto confirma que el túnel VXLAN está activo y correctamente configurado. Si faltan o son incorrectos, es posible que no se pueda acceder a los servicios en todos los nodos.

  1. Por último, comprueba la conectividad entre contenedores. Desde un contenedor, intenta hacer ping o acceder a otro mediante el nombre del contenedor o la IP. Esto confirma que la resolución DNS y el enrutamiento interno funcionan correctamente:
$ docker exec -it container1 ping container2

Comprueba el comportamiento del DNS.

Los contenedores conectados a redes definidas por el usuario utilizan el servidor DNS integrado de Docker. Para confirmar, inspecciona /etc/resolv.conf dentro del contenedor y comprueba la resolución de los nombres de servicio.

Validar el enrutamiento de la puerta de enlace

Para contenedores en varias redes, Docker selecciona la puerta de enlace predeterminada en función de la prioridad gw más alta. Para aplicar el enrutamiento correcto, asigna prioridades explícitas durante la creación del contenedor:

$ docker run --network name=public,gw-priority=1 --network private mycontainer

Utiliza registros y herramientas de diagnóstico.

Supervisa los registros de los contenedores en busca de errores de conectividad y utiliza herramientas como curl, dig e ip a dentro de los contenedores para realizar una depuración de bajo nivel.

En resumen, validar las configuraciones de red de Docker ayuda a garantizar una comunicación fluida entre contenedores y minimiza los fallos inesperados en aplicaciones multiservicio. 

Y esto nos lleva a la siguiente sección.

Optimización de la seguridad y el rendimiento

La red de contenedores real consiste en algo más que habilitar métodos de comunicación. En muchos casos, proporciona el aislamiento necesario al tiempo que garantiza el máximo rendimiento. A la hora de proteger tu arquitectura y prestar un servicio, la segmentación y el rendimiento pueden ayudarte a conseguirlo.

Estrategias de segmentación de redes

La segmentación de redes es una práctica fundamental y un método de seguridad para las aplicaciones en contenedores. Al asignar los contenedores a redes Docker distintas, puedes separar cuestiones transversales como la segmentación de servicios con un frontend, un backend y una base de datos. Esto puede permitir una mitigación proactiva del riesgo frente a la exposición y los posibles ataques.

Puedes aprovechar las redes definidas por el usuario para ayudar a gestionar los límites de comunicación. Los contenedores de diferentes redes no pueden comunicarse entre sí a menos que los conectes explícitamente. Por ejemplo, si colocas tu contenedor de base de datos en una red solo interna, tus servicios públicos no podrán acceder directamente a él.

Reglas y controles de firewall integrados

De forma predeterminada, Docker implementa reglas iptables para restringir los puntos finales de comunicación entre los contenedores y el mundo exterior. 

Algunas formas de ampliar esta segmentación incluyen:

  • Desactivar la comunicación entre contenedores en la red puente predeterminada:
{
  "icc": false
}
  • Añádase esto al archivo daemon.json del demonio Docker para impedir que los contenedores se comuniquen a menos que se encuentren en la misma red definida por el usuario.
  • Limitar capacidades y privilegios mediante indicadores como --cap-drop, --read-only y --no-new-privileges.
  • Uso de redes superpuestas en modo Swarm para comunicaciones cifradas y con ámbito definido entre varios hosts.

Técnicas de optimización del rendimiento

Hay varias formas de mejorar el rendimiento mediante la optimización con Docker. 

Mejora del rendimiento de la red

La elección del controlador de red adecuado tiene un impacto directo en el rendimiento. Por ejemplo:

  • Utiliza el controlador host cuando sea esencial una comunicación de baja latencia y alto rendimiento, y el aislamiento de la red no sea una prioridad.
  • Prefiere el puente para entornos locales y aislados.
  • Implementa macvlan cuando los contenedores deban comportarse como dispositivos físicos en tu red.

Evita sobrecargar el puente y crea redes separadas para servicios pesados o agrupaciones lógicas.

Perfilado del rendimiento con iperf3 y métricas

Para medir el rendimiento de la red, utiliza herramientas de perfilado como iperf3:

# Start server in container1
docker run -it --rm --name server --network my-net networkstatic/iperf3 -s

# Run client in container2
docker run -it --rm --network my-net networkstatic/iperf3 -c server

También puedes supervisar las estadísticas de red utilizando:

  • docker stats – CPU, memoria y E/S de red en tiempo real.
  • Prometheus + cAdvisor: para métricas de series temporales y supervisión a largo plazo.
  • Scripts personalizados o agentes que exportan métricas de /proc/net/dev desde dentro de los contenedores.

La creación de perfiles periódicos ayuda a detectar cuellos de botella de forma temprana y a orientar las decisiones sobre la ubicación de los contenedores, la selección de controladores o las actualizaciones de la red del host.

Solución de problemas de red

Incluso con las mejores prácticas, pueden surgir problemas de red. Diagnosticarlos y resolverlos rápidamente es fundamental para mantener la disponibilidad del servicio. Esta sección proporciona herramientas y técnicas para identificar y solucionar problemas comunes de red de Docker.

Diagnóstico de problemas de red

Un contenedor mínimo podría carecer de herramientas como ping, dig o netstat, lo que dificultaría la resolución de problemas. En lugar de modificar el contenedor, inicia uno nuevo que comparta su espacio de nombres de red:

docker run -it --network container:my-container alpine

A continuación, instala las herramientas de red:

apk add --no-cache iproute2 bind-tools net-tools

Como alternativa, utiliza nicolaka/netshoot, una imagen diseñada específicamente y repleta de herramientas de diagnóstico:

docker run -it --rm --network container:my-container nicolaka/netshoot

Herramientas como ip, nslookup, netstat y traceroute te ayudarán a identificar problemas de enrutamiento o DNS.

Resolución de problemas de conectividad

Algunas causas comunes y sus soluciones:

  • Errores de resolución DNS: Asegúrate de que el contenedor se encuentra en una red definida por el usuario para poder beneficiarte del DNS integrado de Docker. Comprueba /etc/resolv.conf y utiliza dig o nslookup para comprobar la resolución de nombres.
  • Incompatibilidades de MTU: Los contenedores de diferentes redes o hosts pueden experimentar pérdidas de paquetes debido a MTU incompatibles. Reducir el MTU en redes superpuestas si se utiliza túnel:
docker network create --driver overlay --opt com.docker.network.driver.mtu=1200 my-overlay

Subredes en conflicto

Evita solapar subredes en redes Docker o con las redes físicas de tu host. Utiliza --subnet para definir rangos que no entren en conflicto.

Puertos bloqueados por el firewall del host

Asegúrate de que los puertos Docker necesarios estén abiertos:

  • 2377 (Gestión de enjambres)
  • 7946 TCP/UDP (detección de contenedores)
  • 4789 UDP (datos superpuestos)

Una resolución eficaz de problemas combina el diagnóstico con un conocimiento sólido de cómo interactúan los contenedores con sus redes. Con las herramientas y el enfoque adecuados, la mayoría de los problemas se pueden aislar y resolver en cuestión de minutos.

Conclusiones

Docker Networking es un componente fundamental de las arquitecturas contenedorizadas, que permite una comunicación segura, eficiente y escalable entre servicios, tanto si se ejecutan en un único host como en un clúster distribuido. 

Con soporte integrado para varios controladores de red, gestión de IP personalizable y redes de superposición nativas de Swarm, Docker permite a los programadores y equipos de DevOps aislar cargas de trabajo, controlar el flujo de datos y optimizar el rendimiento en entornos complejos.

No es una solución única para todos, pero cuando se utiliza de forma inteligente, ofrece sólidas capacidades para crear microservicios modernos, canalizaciones de automatización y sistemas distribuidos seguros.

¿Quieres seguir perfeccionando tus habilidades con Docker y la contenedorización? 

Aquí tienes algunos recursos muy recomendables para continuar tu aprendizaje:

Preguntas frecuentes sobre la creación de redes en Docker

¿Para qué se utiliza el comando Docker network create?

Se utiliza para definir y configurar redes Docker personalizadas, lo que permite a los contenedores comunicarse de forma segura y eficiente.

¿Cuáles son los principales tipos de controladores de red de Docker?

Los principales controladores son bridge, host, none, overlay, macvlan e ipvlan, cada uno de los cuales ofrece diferentes niveles de aislamiento y conectividad.

¿Cuándo debo utilizar una red superpuesta en Docker?

Las redes superpuestas son ideales para la comunicación entre múltiples hosts, especialmente en entornos Docker Swarm o Kubernetes.

¿Cómo puedo comprobar si una red Docker está configurada correctamente?

Utiliza Docker Network Inspect, comprueba la configuración de IPAM y VXLAN, y prueba la conectividad del contenedor con herramientas de ping o DNS.

¿Qué herramientas ayudan a diagnosticar problemas de red en Docker?

Herramientas como nicolaka/netshoot, dig, nslookup, iperf3 y los registros de contenedores son útiles para depurar problemas comunes, como fallos de DNS o incompatibilidades de MTU.


Josep Ferrer's photo
Author
Josep Ferrer
LinkedIn
Twitter

Josep es Científico de Datos y Gestor de Proyectos en la Agencia Catalana de Turismo, utilizando datos para mejorar la experiencia de los turistas en Cataluña. Su experiencia incluye la gestión del almacenamiento y procesamiento de datos, junto con la analítica avanzada y la comunicación eficaz de las perspectivas de los datos.

También es un dedicado educador, que imparte clases en el Máster de Big Data de la Universidad de Navarra, y contribuye regularmente con artículos perspicaces sobre ciencia de datos en Medium y KDNuggets.

Es Licenciado en Ingeniería Física por la Universidad Politécnica de Cataluña y Máster en Sistemas Interactivos Inteligentes por la Universidad Pompeu Fabra.

En la actualidad, se dedica con pasión a hacer que las tecnologías relacionadas con los datos sean más accesibles a un público más amplio a través de la publicación de Medium ForCode'Sake.

Temas

Cursos más populares de DataCamp

Programa

Contenedores y virtualización con Docker y Kubernetes

0 min
Aprende el poder de Docker y Kubernetes, esta pista interactiva te permitirá construir y desplegar aplicaciones en entornos modernos.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Contratos de datos desmitificados: Todo lo que necesitas saber

Lograr la escalabilidad en los sistemas de datos distribuidos y reducir los errores.
Mike Shakhomirov's photo

Mike Shakhomirov

11 min

blog

Los 13 mejores proyectos de AWS: De principiante a profesional

Explora 13 proyectos prácticos de AWS para todos los niveles. Mejora tus conocimientos sobre la nube con aplicaciones prácticas del mundo real y la orientación de expertos.
Joleen Bothma's photo

Joleen Bothma

12 min

Tutorial

Cómo instalar y configurar MySQL en Docker

Aprende a instalar y configurar la base de datos MySQL dentro de contenedores Docker. El tutorial incluye conceptos como conectarse a servidores MySQL, ejecutar clientes MySQL para conectarse a contenedores, etc.
Bex Tuychiev's photo

Bex Tuychiev

Tutorial

Introducción a las redes neuronales convolucionales (CNN)

Una guía completa para entender las CNN, su impacto en el análisis de imágenes y algunas estrategias clave para combatir el sobreajuste en aplicaciones robustas de CNN frente al aprendizaje profundo.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Jerarquías de Power BI: Guía completa

Aprende a crear, editar, eliminar e implementar jerarquías en Power BI.
Joleen Bothma's photo

Joleen Bothma

Tutorial

Sinapsis Azure: Guía paso a paso para principiantes

Una guía fácil de seguir para que los principiantes aprendan Azure Synapse, que abarca desde la configuración de tu espacio de trabajo hasta la integración de datos y la ejecución de análisis.
Moez Ali's photo

Moez Ali

Ver másVer más