DEV Community

Celso Nery
Celso Nery

Posted on

Parte 4: Trabalhando com Redes

🇺🇸 English version here

Docker para Desenvolvedores — Parte 4: Trabalhando com Redes

Na Parte 3 desta série, vimos como persistir dados com volumes. Agora vamos abordar outro pilar fundamental de aplicações com múltiplos containers: a rede. Quando uma aplicação depende de vários serviços (por exemplo, uma API que precisa conversar com um banco de dados), esses containers precisam conseguir se comunicar entre si — e é isso que as redes do Docker viabilizam.

Listando redes

O Docker já cria algumas redes padrão na instalação (bridge, host, none). Para listar as redes existentes:

$ docker network ls
Enter fullscreen mode Exit fullscreen mode

Criando uma rede

Para criar uma rede customizada, isolada das demais:

$ docker network create <nome_da_rede>
Enter fullscreen mode Exit fullscreen mode

Containers conectados à mesma rede customizada conseguem se comunicar entre si usando o nome do container como hostname — sem precisar descobrir ou fixar endereços IP manualmente.

Inspecionando uma rede

Para ver detalhes de uma rede — como o range de IPs, driver usado e quais containers estão conectados a ela:

$ docker network inspect <nome_da_rede>
Enter fullscreen mode Exit fullscreen mode

Rodando um container já conectado a uma rede

Para criar um container e já conectá-lo a uma rede específica no momento da criação:

$ docker run -it -d --rm --net <nome_da_rede> httpd
Enter fullscreen mode Exit fullscreen mode

Conectando um container já em execução a uma rede

Se o container já está rodando e você quer adicioná-lo a uma rede adicional (um container pode pertencer a múltiplas redes simultaneamente):

$ docker network connect --ip 192.168.100.10 <nome_da_rede> httpd
Enter fullscreen mode Exit fullscreen mode

A flag --ip permite fixar um IP específico para o container dentro dessa rede — útil quando outras aplicações precisam de um endereço previsível para se conectar.

Desconectando um container de uma rede

$ docker network disconnect <nome_da_rede> httpd
Enter fullscreen mode Exit fullscreen mode

Removendo uma rede

$ docker network rm <nome_da_rede>
Enter fullscreen mode Exit fullscreen mode

Uma rede só pode ser removida se não houver nenhum container conectado a ela no momento.

Limpando redes não utilizadas

Assim como acontece com volumes, é comum acumular redes órfãs ao longo do tempo. Para remover todas as redes que não estão sendo usadas por nenhum container:

$ docker network prune
Enter fullscreen mode Exit fullscreen mode

Por que isso importa

Rodar containers isolados, sem uma rede customizada, funciona para testes rápidos — mas assim que uma aplicação precisa de múltiplos serviços conversando entre si (app + banco de dados + cache, por exemplo), redes customizadas deixam de ser opcionais. Elas garantem isolamento (containers de projetos diferentes não se enxergam por padrão) e comunicação simples por nome, sem depender de IPs fixos gerenciados manualmente.

Próximos passos

Com volumes para persistência e redes para comunicação entre containers, já temos as duas peças fundamentais para rodar aplicações multi-serviço. Na Parte 5 desta série, vamos falar sobre gerenciamento de imagens: como construir, versionar (tag) e publicar suas próprias imagens em um registry.

Continua na Parte 5.

Top comments (0)