Docker Bridge vs Host vs None: diferencias y cuándo usar cada red
En esta guía aprenderás los principales tipos de red en Docker:** bridge**, host y none, y cuándo usar cada uno en entornos reales.
La configuración de red en Docker es clave para el rendimiento, la seguridad y la comunicación entre contenedores. Elegir mal puede provocar errores de conexión o exponer servicios innecesariamente.
Un error muy común al empezar con Docker es no entender cómo funciona la red, lo que provoca que los contenedores no se comuniquen correctamente.
📚Índice
- ¿Por qué importa la red en Docker?
- Modo bridge — el predeterminado
- Modo host — sin aislamiento
- Modo none — aislamiento total
- Comparativa rápida
- ¿Cuándo usar cada uno?
- Ejemplos prácticos con comandos
1.¿Por qué importa la red en Docker?
Docker aísla los contenedores del sistema host y entre sí. La red define quién puede hablar con quién y cómo. Elegir mal puede romperte la comunicación entre microservicios, exponer puertos innecesariamente o degradar el rendimiento en aplicaciones de alto tráfico.
Docker viene con varios drivers de red. Los más usados en producción son bridge, host y none. Existen otros como overlay (para Swarm/Kubernetes) o macvlan, pero esos merecen su propio artículo.


2.Modo bridge — el predeterminado
¿Cómo funciona?
Docker crea una interfaz de red virtual (docker0) en el host. Cada contenedor recibe su propia IP dentro de esa subred privada. Para que el exterior acceda al contenedor, necesitas mapear puertos explícitamente con -p.
Es como una red privada dentro de tu máquina. Los contenedores se ven entre sí (si están en la misma red bridge), pero el mundo exterior no los ve directamente.
Comando básico
Lanzar con bridge (por defecto)
docker run -d -p 8080:80 nginxCrear una red bridge personalizada
docker network create --driver bridge mi-redConectar 2 contenedores en la misma red
docker run --network mi-red --name app mi-app
docker run --network mi-red --name db postgresCon una red bridge personalizada (no la docker0 por defecto), los contenedores pueden** resolverse por nombre**. Esto es clave: app puede hacer ping a db directamente por hostname.
La red bridge por defecto (docker0) no tiene resolución DNS entre contenedores. Siempre crea redes bridge personalizadas en proyectos reales.
Cúando usarlo
Es el modo correcto para la mayoría de casos:
- Aplicaciones Web
- APIs
- Microservicios que necesitan comunicarse entre sí de forma aislada del host
3.Modo host — sin aislamiento de red
¿Cómo funciona?
El contenedor comparte directamente la red del host. No hay traducción de puertos, no hay interfaz virtual. Si tu app escucha en el puerto 80, el host escucha en el 80.
No hay aislamiento de red. Si el contenedor tiene una vulnerabilidad, tiene acceso directo a todas las interfaces de red del host.
Comando básico
Lanzar en modo host
docker run --network host nginxVerificar el puerto 80 aparece directamente en el host
ss -tlnp | grep :80En modo host, la opción -p se ignora. No necesitas ni puedes mapear puertos.
El modo host solo funciona en Linux. En macOS y Windows, Docker corre dentro de una VM y el comportamiento es diferente.
Cúando usarlo
Tiene sentido en casos muy específicos donde el rendimiento de red es crítico y el aislamiento no es prioridad:
- Herramientas de monitorización (como Prometheus node_exporter).
- Proxies de alto rendimiento.
- Situaciones donde necesitas que el contenedor vea todas las interfaces del host.

4.Modo none — aislamiento total
¿Cómo funciona?
El contenedor no tiene ninguna interfaz de red (salvo el loopback lo). Completamente aislado. No puede enviar ni recibir tráfico de ningún tipo.
Lanzar sin red
docker run --network none alpine shDentro del contenedor, solo existe loopback
ip addr show
# Output: solo 'lo' (127.0.0.1)Cúando usarlo
Es el modo correcto para tareas de procesamiento puro que no requieren red:
- Procesado de archivos
- Compilaciones
- Tareas de seguridad donde quieres eliminar superficie de ataque de red
- Entornos de testing aislados
Para workloads de seguridad crítica (análisis de malware, sandboxing, procesado de datos sensibles),*** --network none*** es una capa de defensa en profundidad valiosa.
5.Comparativa rápida
Comparativa rápida
bridge
Red virtual privada con NAT
- Aislamiento del host
- DNS entre contenedores
- Requiere mapeo de puertos
- Ligera overhead de NAT
host
Comparte la red del host
- Sin aislamiento de red
- Rendimiento máximo
- Sin mapeo de puertos
- Solo Linux nativo
none
Sin interfaz de red
- Aislamiento total
- Solo loopback
- Sin conectividad exterior
- Máxima seguridad
| Característica | bridge | host | none |
|---|---|---|---|
| Aislamiento de red | Sí | No | Total |
| Acceso a internet | Sí | Sí | No |
| DNS entre contenedores | Con red personalizada | No aplica | No |
| Rendimiento | Bueno (ligero overhead) | Máximo | N/A |
| Mapeo de puertos | Necesario | No disponible | No disponible |
| macOS / Windows | Sí | Limitado (VM) | Sí |
Selecciona un modo de red para ver cuándo usarlo.
6.¿Cuándo usar cada uno?
7.Ejemplos prácticos con comandos
Stack completo con bridge personalizado (docker-compose)
# docker-compose.yml
services:
api:
image: mi-api
networks:
- backend
db:
image: postgres
networks:
- backend
networks:
backend:
driver: bridgeHerramienta de monitorización en modo host
# node_exporter de Prometheus necesita ver todas las interfaces del host
docker run -d \
--network host \
--name node_exporter \
prom/node-exporterTarea de procesado sin acceso a red
# Procesar un archivo sin ninguna conectividad de red
docker run --network none \
-v ./data:/data \
--rm \
mi-procesador --input /data/archivo.csv


