Redes en Docker
Qué cubre este artículo sobre redes Docker
- Qué tipos de redes ofrece Docker.
- Cómo se comunican los contenedores entre sí.
- Configurar redes personalizadas.
- Diferencias entre Bridge, Host y Overlay.
- Consejos para pilas locales de IA.
Introducción: Redes Docker
Docker aísla los contenedores entre sí de manera predeterminada. Para aplicaciones multicontenedor como Ollama, Open WebUI y bases de datos, necesitas una red compartida. Docker proporciona varios controladores de red que permiten a los contenedores comunicarse, publicar puertos y habilitar acceso externo. Entender las redes Docker te ayuda a evitar problemas de conectividad típicos y construir configuraciones más estables.
Este artículo explica los tipos de red Docker más importantes y su uso en proyectos locales de IA.
Términos clave
- Bridge: La red estándar en Docker.
- Host: El contenedor comparte el stack de red del host.
- Overlay: Red para Docker Swarm y clústeres.
- None: Sin conexión de red.
- DNS: Resolución de nombres dentro de la red de contenedores.
- Alias: Un nombre adicional para un contenedor en la red.
- Port-Mapping: Redirección de un puerto del host a un puerto del contenedor.
Tipos de red estándar
Bridge
Cada contenedor que no especifica una red termina en la Bridge predeterminada. Desde ahí puede alcanzar otros contenedores por dirección IP, pero no por nombre. Las redes Bridge personalizadas ofrecen resolución DNS de nombres.
Host
El contenedor usa el stack de red del host. Sin aislamiento, pero máximo rendimiento. No disponible en Windows y macOS.
None
Sin conexión de red. Solo para aplicaciones especiales.
Overlay
Para Docker Swarm y clústeres. Permite la comunicación entre contenedores en diferentes hosts.
Redes Bridge personalizadas
docker network create ki-net
Conectar un contenedor a la red:
docker run -d --name ollama --network ki-net ollama/ollama
docker run -d --name open-webui --network ki-net -e OLLAMA_BASE_URL=http://ollama:11434 ghcr.io/open-webui/open-webui:main
Ahora el contenedor open-webui puede acceder a Ollama usando el nombre ollama.
En Docker Compose
services:
ollama:
image: ollama/ollama
networks:
- ki-net
open-webui:
image: ghcr.io/open-webui/open-webui:main
networks:
- ki-net
environment:
- OLLAMA_BASE_URL=http://ollama:11434
networks:
ki-net:
Publicar puertos
docker run -d -p 127.0.0.1:8080:8080 open-webui
Solo el puerto 8080 del host es accesible. El contenedor permanece oculto detrás de la dirección de vinculación.
DNS en la red
Las Bridge personalizadas incluyen DNS integrado. Los contenedores pueden comunicarse entre sí por nombre. Esto es especialmente útil en pilas Compose.
Red del host
docker run -d --network host ollama/ollama
No es necesario port-mapping; el contenedor escucha directamente en las interfaces del host. Menos seguro, pero a veces necesario.
Aislar la red
Los contenedores que no deben comunicarse entre sí pueden colocarse en redes separadas:
networks:
front:
back:
Solo los servicios deseados obtienen acceso a ambas redes.
Diagnosticar problemas de conectividad
docker network ls
docker network inspect ki-net
docker exec -it open-webui ping ollama
Si ping falla, verifica que ambos contenedores estén en la misma red.
Problemas comunes
- Bridge predeterminada sin DNS: El nombre del contenedor no se puede resolver.
- Puerto incorrecto: Confundir el puerto del host con el puerto del contenedor.
- IP de vinculación incorrecta: Usar
0.0.0.0en lugar de127.0.0.1. - Contenedor en la red incorrecta: Solo es alcanzable por IP, no por nombre.
- Firewall del host bloquea el acceso: Impide el acceso externo.
- Red del host en macOS/Windows: No disponible.
Enlaces y referencias
- BotServ.de Comandos Docker
- BotServ.de Docker Compose
- BotServ.de Docker Reverse Proxy
- BotServ.de Comandos Ollama
FAQ: Redes Docker
¿Cómo accedo a un contenedor usando su nombre? En la misma red Bridge personalizada, a través de la resolución DNS de nombres.
¿Cuál es la diferencia entre Bridge y Host? Bridge aísla, Host comparte el stack de red.
¿Necesito Overlay? Solo para Docker Swarm o clústeres en múltiples hosts.
¿Cómo publico puertos de forma segura?
Lo mejor es vincularse solo a 127.0.0.1.
¿Por qué el contenedor A no puede alcanzar el contenedor B? Probablemente estén en redes diferentes.
Fuentes y lecturas adicionales
- Docker Network Docs: https://docs.docker.com/network/
- Docker Bridge Network: https://docs.docker.com/network/bridge/
- Docker Overlay: https://docs.docker.com/network/overlay/
Conclusión: Redes Docker
Las redes Docker son esenciales para configuraciones multicontenedor. Las redes Bridge personalizadas ofrecen resolución DNS de nombres e aíslan servicios de forma efectiva. Los port-mappings deben vincularse solo a 127.0.0.1; la red del host es un caso especial. Quien utiliza docker network create, docker network inspect y pruebas básicas de conectividad encuentra rápidamente los problemas de red. Para pilas de IA con Ollama, Open WebUI y bases de datos, las redes bien configuradas son la base para un funcionamiento estable.


