Alias de Red y Descubrimiento de Servicios
Las redes de Docker admiten el descubrimiento de servicios mediante alias de red, lo cual es muy útil para crear aplicaciones resilientes y escalables. Esta función permite que múltiples contenedores respondan al mismo nombre DNS, facilitando un equilibrio de carga básico.
- Crea una nueva red de puente para este ejercicio:
docker network create service-network
- Verifica la creación de la red:
docker network ls
Deberías ver service-network en la lista.
- Crea dos contenedores con el mismo alias de red:
docker run -d --network service-network --network-alias myservice --name service1 nginx
docker run -d --network service-network --network-alias myservice --name service2 nginx
- Crea un contenedor cliente y usa
nslookup para resolver el servicio:
docker run --rm --network service-network appropriate/curl nslookup myservice
Deberías ver las IPs de ambos contenedores, lo que demuestra que el servidor DNS embebido de Docker está realizando un equilibrio de carga entre los dos contenedores.
- Prueba el acceso al servicio varias veces:
for i in {1..4}; do docker run --rm --network service-network appropriate/curl ping -c 1 myservice; done
Deberías ver respuestas de ambos contenedores, demostrando el equilibrio de carga básico. El servidor DNS de Docker alternará entre las dos direcciones IP al resolver myservice.
PING myservice (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.106 ms
--- myservice ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.106/0.106/0.106 ms
PING myservice (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.119 ms
--- myservice ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.119/0.119/0.119 ms
PING myservice (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.097 ms
--- myservice ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.097/0.097/0.097 ms
PING myservice (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.140 ms
--- myservice ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.140/0.140/0.140 ms