Docker Bridge vs Host vs None: diferencias y cuándo usar cada red

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

  1. ¿Por qué importa la red en Docker?
  2. Modo bridge — el predeterminado
  3. Modo host — sin aislamiento
  4. Modo none — aislamiento total
  5. Comparativa rápida
  6. ¿Cuándo usar cada uno?
  7. 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.

Gemini_Generated_Image_z9ay61z9ay61z9ay (1).png

Cómo usar Docker Compose en Ubuntu paso a paso (Guía completa)
Aprende a usar Docker Compose en Ubuntu con ejemplos reales. Guía paso a paso para crear y gestionar contenedores fácilmente.

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 nginx

Crear una red bridge personalizada

docker network create --driver bridge mi-red

Conectar 2 contenedores en la misma red

docker run --network mi-red --name app mi-app

docker run --network mi-red --name db postgres

Con 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 nginx

Verificar el puerto 80 aparece directamente en el host

ss -tlnp | grep :80

En 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.
Docker Volumes: qué son, tipos y ejemplos reales (Guía completa)
Aprende qué son los Docker Volumes, cuándo usarlos y cómo configurarlos paso a paso. Guía completa con ejemplos reales, Docker Compose y errores comunes.

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 sh

Dentro 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 Docker Networking

Comparativa rápida

Usar con cuidado

host

Comparte la red del host

  • Sin aislamiento de red
  • Rendimiento máximo
  • Sin mapeo de puertos
  • Solo Linux nativo
Casos especiales

none

Sin interfaz de red

  • Aislamiento total
  • Solo loopback
  • Sin conectividad exterior
  • Máxima seguridad
Característica bridge host none
Aislamiento de red No Total
Acceso a internet 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 Limitado (VM)
Haz clic en una tarjeta para ver más detalles

Selecciona un modo de red para ver cuándo usarlo.

6.¿Cuándo usar cada uno?

💡
Bridge → para casi todo. Microservicios, apps web, bases de datos, entornos de desarrollo. Es el default por una razón.
💡
Host → cuando el rendimiento de red es crítico Y corres en Linux. Herramientas de monitorización, proxies, network tools. Evalúa el riesgo de seguridad antes.
💡
None → cuando el contenedor no necesita red. Procesado de archivos, compilaciones, análisis de seguridad, sandboxing.

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: bridge

Herramienta 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-exporter

Tarea 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
Dockerfile optimizado: 6 errores comunes y cómo evitarlos
Aprende a optimizar tu Dockerfile evitando los 6 errores más comunes: caché de capas, imágenes pesadas, secretos expuestos y multi-stage builds.

Read more