DEV Community

Isaias Velasquez
Isaias Velasquez

Posted on

How to usar Docker networks na pratica

Quando voce cria um container e depois outro, eles podem nao se enxergar. O motivo quase sempre e a rede. Entender os tipos de rede que o Docker oferece resolve isso de uma vez.

Comece listando as redes que ja existem no seu Docker.

docker network ls
Enter fullscreen mode Exit fullscreen mode

A rede bridge e a rede host vem de fabrica. Nenhuma delas oferece resolucao de nomes entre containers. Para isso voce precisa criar a sua propria rede.

docker network create minha-rede
Enter fullscreen mode Exit fullscreen mode

Agora os containers que entrarem nessa rede conseguem se comunicar pelo nome do container.

docker run -d --name app1 --network minha-rede nginx
docker run -d --name app2 --network minha-rede alpine sleep 3600
Enter fullscreen mode Exit fullscreen mode

Teste a comunicacao.

docker exec app2 ping app1 -c 2
Enter fullscreen mode Exit fullscreen mode

O ping funciona. O DNS interno do Docker resolve app1 para o IP interno do container. Isso resolve 90% dos problemas de comunicacao.

A rede bridge padrao nao tem esse recurso. Crie sua propria rede sempre que precisar que containers se enxerguem.

Agora a rede host. Ela elimina o isolamento de rede. O container usa a placa do host diretamente, sem NAT e sem mapeamento de porta.

docker run -d --name web-host --network host nginx
Enter fullscreen mode Exit fullscreen mode

O nginx fica acessivel em http://localhost:80 direto. Sem -p 80:80. Mas so um container pode usar cada porta, porque a porta e a do host de verdade.

Para ambientes com mais de uma maquina, existe a rede overlay. Ela precisa do Docker Swarm ou de um cluster.

docker swarm init
docker network create -d overlay rede-overlay
docker service create --name api --network rede-overlay --replicas 3 nginx
Enter fullscreen mode Exit fullscreen mode

Os containers em maquinas diferentes se enxergam pelo nome como se estivessem na mesma maquina.

No dia a dia, a rede bridge personalizada resolve quase todo caso de uso. Host e para performance ou casos especificos. Overlay e para quando voce escala para mais de uma maquina.

That's all for now.
Thanks for reading!

Top comments (0)