Redes Overlay en Docker Swarm: Comunicación entre Servicios
Clase 18 de 24 • Curso de Swarm
Contenido del curso
Primeros pasos
- 6

Instalación de Docker en Mac, Ubuntu y Windows
10:13 min - 7

Cómo iniciar Docker Swarm en tu máquina
08:35 min - 8

Creando servicios en Docker Swarm
05:36 min - 9

Cómo funciona docker service ps internamente
11:09 min - 10

Qué es Play with Docker para practicar
06:27 min - 11

Creando un Docker Swarm multinodo real
06:15 min
Administrando Servicios
Swarm avanzado
- 15

Cómo Docker Swarm enruta tráfico sin perder peticiones
06:56 min - 16

Docker Swarm constraints: dónde correr cada tarea
09:04 min - 17

Cómo drenar nodos en Docker Swarm sin downtime
07:56 min - 18

Redes Overlay en Docker Swarm: Comunicación entre Servicios
Viendo ahora - 19

Docker Stack: automatiza despliegues multinodo
10:49 min - 20

Implementación de Reverse Proxy con Traefik en Docker Swarm
16:49 min
Swarm productivo
Conclusiones
Conecta servicios en Docker Swarm con seguridad y claridad: aquí verás cómo funciona el networking de Swarm, por qué las redes overlay son clave y cómo lograr que una app hable con MongoDB usando resolución por hostname y variables de entorno. Todo con comandos reproducibles y sin tocar la red especial ingress.
¿Cómo funciona el networking de Swarm y qué redes existen?
Swarm agrega capacidades de red distintas al Docker local. En cuanto activas el modo Swarm, aparecen redes con roles bien definidos y un alcance de clúster.
- overlay con scope Swarm: red distribuida, disponible en todos los nodos. Ideal para conectar servicios, ya que el scheduler puede mover tareas entre hosts sin romper la conectividad.
- ingress (overlay especial): red de entrada usada por el enrutamiento de solicitudes. Es compartida por todo el clúster y no debería modificarse. Si necesitas tocarla, probablemente estés resolviendo otro problema.
- docker_gwbridge (bridge): puente local que conecta la red overlay (como ingress) con la red física del nodo. Cada nodo tiene su propia docker_gwbridge.
- bridge, host, none (locales): las clásicas del Docker standalone. No son distribuidas ni comparten alcance entre nodos.
¿Por qué usar overlay para servicios en Swarm?
- Porque no sabes en qué nodo caerá una tarea: el scheduler mueve y reprograma.
- Porque necesitas conectividad cross-host: la overlay garantiza que cualquier tarea, en cualquier host, acceda a la red.
¿Qué implica el scope Swarm?
- La red existe a nivel clúster.
- Solo ves detalles de contenedores conectados en el nodo donde están activos al hacer
docker network inspect.
¿Qué es el service discovery por hostname?
- Si dos servicios comparten la misma overlay, se resuelven por hostname usando el nombre del servicio.
- Ejemplo: la app puede alcanzar a
dbenmongodb://db/testsin IPs duras.
¿Cómo crear una red overlay y conectar servicios por hostname?
Configura una red overlay, despliega MongoDB y tu app, y enlázalos por nombre.
¿Cómo crear la red y verificarla?
- Crea la overlay con driver overlay.
# crear red overlay
docker network create --driver overlay appnet
# listar redes
docker network ls
# inspeccionar la red
docker network inspect appnet
- Verás
scope: swarm. Al inicio elinspectluce “vacío” si no hay servicios conectados.
¿Cómo desplegar MongoDB y la app en la misma red?
- Crea el servicio de base de datos y conéctalo a la overlay.
# servicio de base de datos
docker service create \
--name db \
--network appnet \
<imagen_mongo>
# servicio de aplicación
docker service create \
--name app \
--network appnet \
-p 3000:3000 \
<imagen_app>
- Publica el puerto de la app si necesitas acceso externo (
-p 3000:3000). La base no requiere puerto publicado para el uso interno.
¿Cómo pasar la URL de Mongo por variable de entorno?
- Por defecto, la app intentará
localhost. Actualiza el servicio para usar el hostnamedbdentro de la overlay.
# añadir variable de entorno a la app
docker service update \
--env-add mongoURL=mongodb://db/test \
app
- Clave: service discovery por hostname en overlay. No necesitas IPs ni puertos explícitos si usas el predeterminado del servicio.
¿Qué validaciones y buenas prácticas se observaron?
Comprueba la comunicación, explora la red y recuerda cuándo no usar bases en Swarm para producción.
¿Cómo verificar tareas, contenedores y escritura en Mongo?
- Revisa el estado de los servicios y en qué nodos corren.
# estado de servicios
docker service ls
docker service ps db
docker service ps app
- En el nodo que ejecuta Mongo, ingresa al contenedor y valida inserts.
# entrar al contenedor
docker ps
docker exec -it <id_contenedor_mongo> bash
# en el shell de mongo
mongo
use test
db.pings.find()
- Si recargas la app y ves “éxito” y más documentos en
db.pings, la conectividad funciona entre manager y worker mediante overlay.
¿Qué muestra network inspect cuando hay servicios conectados?
- Ejecuta
docker network inspect appneten un nodo con tareas conectadas. - Verás:
- Contenedores adheridos a la red.
- Componentes internos que permiten el balanceo de carga entre tareas (VIP interno).
- Lista de peers: nodos que participan de la overlay.
¿Qué buenas prácticas aplicar con databases en Swarm?
- Úsalo para entornos efímeros: pruebas de pull requests o playgrounds.
- Evítalo en producción: una base crítica no debería vivir como servicio de Swarm.
- Consejo adicional: no toques la red ingress. Es una red especial del enrutador de entrada.
¿Tienes dudas o casos de uso específicos con redes overlay, service discovery o publicación de puertos? Cuéntalo y seguimos la conversación.