🇺🇸 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
Criando uma rede
Para criar uma rede customizada, isolada das demais:
$ docker network create <nome_da_rede>
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>
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
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
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
Removendo uma rede
$ docker network rm <nome_da_rede>
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
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)