cd ..
DOCKER

Redes no Docker: conectando containers e limitando recursos

Redes no Docker: conectando containers e limitando recursos

Por padrão, cada container é isolado dos demais graças ao net namespace — cada um tem sua própria visão de rede. Mas aplicações reais quase nunca vivem sozinhas: uma API precisa falar com um Redis, um Redis precisa ser alcançável só por quem precisa dele. Para isso existem as redes Docker.

Comandos de rede

ComandoFunção
docker network createcria uma rede
docker network connectconecta um container já existente a uma rede
docker network disconnectdesconecta um container de uma rede
docker network lslista as redes existentes
docker network inspectmostra detalhes de uma rede, incluindo containers conectados
docker network rmremove uma rede
docker network pruneremove redes sem containers conectados

Criando uma rede e conectando containers

docker network create giropops-senhas
docker run -d --name redis \
  --network giropops-senhas \
  -p 6379:6379 redis
docker run -d --name giropops-senhas \
  --network giropops-senhas \
  -e REDIS_HOST=redis \
  -p 5000:5000 cesarsantos96/giropops-senhas:1.0

O ponto-chave: dois containers na mesma rede conseguem se enxergar pelo nome. O Docker resolve redis para o IP correto do container redis através de um DNS interno — não é preciso descobrir ou fixar IPs manualmente. É exatamente isso que a variável REDIS_HOST=redis, passada com -e, está aproveitando: ela avisa a aplicação de qual hostname usar para encontrar o banco.

Limitando CPU e memória

Sem limites, um container com bug ou pico de uso pode consumir todos os recursos disponíveis na máquina, prejudicando os demais. Duas flags do docker run resolvem isso diretamente:

docker run -d --name redis \
  --network giropops-senhas \
  -p 6379:6379 \
  --cpus 1 \
  --memory 256m \
  redis

Para ver a lista completa de opções de limite disponíveis no run:

docker container run --help

Conclusão

Com redes e limites de recursos, já temos containers que conversam entre si sem depender de IPs fixos, e sem risco de um deles derrubar a máquina inteira. O que falta agora é parar de digitar um docker run gigante toda vez — e é isso que o Docker Compose resolve, na próxima parte da série.

Referências

O que achou?