Alias de red y descubrimiento de servicios
Las redes de Docker admiten el descubrimiento de servicios utilizando alias de red, lo cual puede ser útil para crear aplicaciones resistentes y escalables. Esta característica permite que múltiples contenedores respondan al mismo nombre DNS, lo que habilita 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 utiliza
nslookup
para resolver el servicio:
docker run --rm --network service-network appropriate/curl nslookup myservice
Deberías ver devueltas las direcciones IP de ambos contenedores, lo que demuestra que el servidor DNS integrado de Docker está realizando un equilibrio de carga entre los dos contenedores.
- Prueba acceder 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, lo que demuestra un 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