Redes en Docker: los 6 tipos y cuál necesitas en cada caso

Rubén Castro, actualizado a 10 agosto 2026
docker redes network guia

Como ya sabrás, Docker es una de las plataformas de contenedorización más populares y utiliza la virtualización a nivel de sistema operativo para agrupar aplicaciones de software y sus dependencias en unidades reutilizables conocidas como contenedores.

Estos contenedores Docker pueden funcionar en cualquier ordenador equipado con Docker, ya sea en una máquina local o en un entorno remoto en la nube.

Dentro de Docker, se incorpora un sistema de red para gestionar la comunicación entre:

  • Los contenedores
  • El host
  • Y los sistemas externos

Lógicamente, tenemos varios tipos de red disponibles para adaptarnos a diferentes escenarios. En concreto seis, y elegir mal es la causa de buena parte de los ratos perdidos con Docker: contenedores que no se ven entre sí, puertos que no responden o servicios que se pisan.

Vamos a verlos uno a uno, cuándo tiene sentido cada uno y con qué comandos se manejan. Y empezamos avisando de la trampa que más tiempo hace perder: la red que Docker te da hecha y la que creas tú no funcionan igual.

Tipos de Redes Docker

Para que los contenedores establezcan conectividad de red, deben estar vinculados a una red Docker. Las vías de comunicación disponibles para cada contenedor dependen de sus asociaciones de red. Docker ofrece seis controladores de red preconfigurados que sirven como columna vertebral para la funcionalidad de red:

Bridge o puente

Esta es la red por defecto. Cada vez que inicias Docker, se crea una red Bridge y todos los contenedores recién iniciados se conectarán automáticamente a la red puente por defecto. Puedes utilizar esto siempre que quieras que tus contenedores que se ejecutan de forma aislada se conecten y se comuniquen entre sí.

Aquí está el tropiezo que se lleva a todo el mundo por delante, y conviene tenerlo claro desde el principio: la red bridge por defecto y una red bridge que creas tú no se comportan igual.

En la red por defecto, los contenedores solo se ven por dirección IP. Si intentas que uno llame a otro por su nombre, te devuelve un bad address y te vuelves loco buscando el fallo donde no está. En una red que hayas creado tú, en cambio, Docker levanta un servidor DNS interno y los contenedores se encuentran por nombre sin que configures nada.

Por eso la recomendación práctica es siempre la misma: crea tu propia red y no uses la de por defecto para nada serio.

Dado que los contenedores se ejecutan de forma aislada, la red puente resuelve el problema del conflicto de puertos. Si los conceptos de red te bailan, los repasamos en redes y subredes explicadas. Los contenedores que se ejecutan en la misma red puente pueden comunicarse entre sí, y Docker utiliza iptables en la máquina anfitriona para evitar el acceso fuera del puente.

Host

Los contenedores que utilizan el modo de red host comparten directamente la pila de red del host sin aislamiento.

La red del contenedor se comporta como si estuviera directamente en el host. No reciben direcciones IP separadas; en su lugar, los enlaces de puerto se exponen directamente a la interfaz de red del host. En consecuencia, un proceso contenedor escuchando en el puerto 80 se enlazaría a <su_host_ip>:80.

Como no hay traducción de puertos de por medio, es también la opción más rápida y la que tiene sentido cuando un contenedor necesita abrir muchísimos puertos o escuchar tráfico de la red.

El modo host nació siendo exclusivo de Linux: en Docker Desktop para Mac y Windows sencillamente no funcionaba, porque ahí los contenedores viven dentro de una máquina virtual y «el host» no es tu ordenador. Desde Docker Desktop 4.34 (2024) ya está disponible en los tres sistemas, pero hay que activarlo a mano en Settings › Resources › Network.

Overlay

Las redes superpuestas abarcan redes distribuidas que se extienden a través de múltiples hosts Docker, permitiendo la comunicación entre contenedores a través de hosts sin necesidad de soporte de enrutamiento a nivel de sistema operativo.

Aunque se emplean principalmente en clusters Docker Swarm, las redes superpuestas también pueden utilizarse para establecer comunicación directa entre contenedores en distintas instancias de Docker Engine, permitiendo así la creación de entornos personalizados tipo Swarm.

IPvLAN

IPvLAN funciona como un controlador avanzado que proporciona un control preciso sobre las direcciones IPv4 e IPv6 asignadas a los contenedores, junto con el etiquetado y enrutamiento VLAN de capa 2 y 3.

Este controlador es particularmente beneficioso para integrar servicios de contenedores en redes físicas existentes, ofreciendo ventajas de usabilidad sobre las redes basadas en puentes.

MACVLAN

MACVLAN presenta otra opción sofisticada que permite a los contenedores emular dispositivos físicos en la red asignando a cada contenedor una dirección MAC única. Este tipo de red requiere la dedicación de una de las interfaces físicas del host a la red virtual. Además, la infraestructura de red más amplia debe configurarse adecuadamente para dar cabida a la posible afluencia de direcciones MAC derivadas de un host Docker activo que gestione numerosos contenedores.

none

Aísla completamente un contenedor del host y de otros contenedores.

¿Qué tipo de red debo utilizar?

Los seis controladores de red de Docker y cuándo tiene sentido cada uno

Tipo de redPara qué sirveCuándo la quieresAislamiento
bridge (la que creas tú)Red privada entre contenedores del mismo hostCasi siempre. Es la respuesta por defectoAlto
bridge por defectoLa que Docker usa si no dices nadaNunca a propósito: no resuelve nombresAlto
hostEl contenedor usa la red del anfitrión tal cualCuando necesitas rendimiento o abrir muchos puertosNinguno
overlayUne contenedores repartidos en varios hostsSwarm o varios servidores hablando entre síAlto
macvlanCada contenedor aparece como un aparato físico con su MACDomótica y captura de tráfico en la LANMedio
ipvlanComo macvlan pero sin MAC propia por contenedorCuando el switch o el router limitan las MACMedio
noneSin red de ningún tipoProcesos de cálculo que no deben salir a InternetTotal

Las redes bridge son la opción más adecuada para la mayoría de los casos —siempre que sea una red creada por ti, como decíamos arriba—. Los contenedores que están en ella se comunican entre sí por nombre, sin necesidad de saberse las direcciones IP, y además tienen acceso a la red de tu host, por lo que pueden llegar a Internet y a tu LAN.

Las redes de host son las mejores cuando quieres vincular puertos directamente a las interfaces de tu host y no te preocupa el aislamiento de la red. Permiten que las aplicaciones en contenedores funcionen de forma similar a los servicios de red que se ejecutan directamente en el host.

Las redes Overlay son necesarias cuando los contenedores en diferentes hosts Docker necesitan comunicarse directamente entre sí. Estas redes te permiten configurar tus propios entornos distribuidos para una alta disponibilidad.

Las redes Macvlan son útiles en situaciones en las que los contenedores deben aparecer como un dispositivo físico en la red de tu host, como cuando ejecutan una aplicación que monitoriza el tráfico de red. Las redes IPvLAN son una opción avanzada para cuando se tienen requisitos específicos en torno a las direcciones IP, etiquetas y enrutamiento de los contenedores.

Los comandos que vas a usar de verdad

Toda la teoría anterior se maneja con un puñado de órdenes. Estas son las que se usan el 95 % del tiempo.

Ver qué redes tienes

docker network ls

Te saldrán al menos tres, que Docker crea solo y no debes borrar: bridge (la de por defecto), host y none.

NETWORK ID     NAME      DRIVER    SCOPE
2f259bab93aa   bridge    bridge    local
7c1a0d4e88b2   host      host      local
b30fe9a71c04   none      null      local

Crear la tuya

docker network create mi-red

Sin más parámetros te crea una red bridge, que es lo que quieres en la inmensa mayoría de los casos. Si necesitas fijar el rango de direcciones:

docker network create --subnet 172.28.0.0/16 mi-red

Arrancar un contenedor dentro de ella

docker run -d --name web --network mi-red -p 8080:80 nginx

Meter o sacar un contenedor que ya está corriendo

docker network connect mi-red web
docker network disconnect mi-red web

Un contenedor puede estar en varias redes a la vez, que es la forma limpia de montar, por ejemplo, un servidor web accesible desde fuera y una base de datos que solo hable con él.

Ver qué hay dentro de una red

docker network inspect mi-red

Es el comando al que vas a recurrir cuando algo no conecta: te dice el rango de direcciones, la puerta de enlace y qué contenedores están enchufados, con su IP.

Limpiar

docker network rm mi-red
docker network prune

El segundo borra de golpe todas las redes que no esté usando ningún contenedor.

Cuidado con prune: se lleva por delante cualquier red sin contenedores arrancados en ese momento. Si tienes un docker compose parado, su red también cae, y al levantarlo otra vez se recreará con un rango de direcciones distinto. Si algo dependía de esas IP, dejará de funcionar.

Y con Docker Compose

Si usas Compose, casi nunca vas a escribir estos comandos: al levantar el proyecto se crea sola una red bridge propia con el nombre de la carpeta, y todos los servicios del fichero entran en ella. Por eso en un compose.yaml puedes llamar a la base de datos por su nombre de servicio (db, postgres…) sin configurar nada: estás en una red creada por ti, con el DNS interno funcionando.

Es exactamente el comportamiento del apartado anterior, solo que Compose te lo da hecho.

Fuentes

  1. docs.docker.com
  2. docs.docker.com
Rubén Castro

Rubén Castro

Redactor

Apasionado de explorar y diseccionar lo último en tecnología. Tengo mucha experiencia en el mundo de los ordenadores y el gaming, aunque también me gustan todos los tipos de gadgets.