Aliases de Rede e Descoberta de Serviços
As redes do Docker suportam a descoberta de serviços usando aliases de rede, o que é extremamente útil para criar aplicações resilientes e escaláveis. Este recurso permite que múltiplos containers respondam ao mesmo nome DNS, possibilitando um balanceamento de carga básico.
- Crie uma nova rede bridge para este exercício:
docker network create service-network
- Verifique a criação da rede:
docker network ls
Você deve ver service-network na lista.
- Crie dois containers com o mesmo alias de rede:
docker run -d --network service-network --network-alias myservice --name service1 nginx
docker run -d --network service-network --network-alias myservice --name service2 nginx
- Crie um container cliente e use o
nslookup para resolver o serviço:
docker run --rm --network service-network appropriate/curl nslookup myservice
Você deve ver os IPs de ambos os containers retornados, demonstrando que o servidor DNS embutido do Docker está realizando o balanceamento entre os dois containers.
- Teste o acesso ao serviço múltiplas vezes:
for i in {1..4}; do docker run --rm --network service-network appropriate/curl ping -c 1 myservice; done
Você deve ver respostas de ambos os containers, demonstrando o balanceamento de carga básico. O servidor DNS do Docker alternará entre os dois endereços IP ao 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