Pular para conteúdo

Docker fornece redes virtuais para comunicação entre containers.


Visão Geral

Cada container possui:

  • Stack de rede própria
  • IP interno
  • Possibilidade de múltiplas redes
  • Portas expostas opcionalmente

Por padrão, containers entram na rede bridge.


Tipos de Rede

1. bridge (default)

  • Rede padrão do Docker
  • Comunicação entre containers na mesma rede
  • NAT para saída externa
  • Permite port mapping

Inspecionar:

docker network inspect bridge

2. host

  • Container compartilha rede do host
  • Sem NAT
  • Sem port mapping necessário
  • Sem isolamento de porta

Uso:

docker run --network host nginx

3. none

  • Container sem rede
  • Totalmente isolado

Uso:

docker run --network none alpine

4. overlay

  • Rede distribuída entre múltiplos hosts
  • Utilizada com Docker Swarm
  • Permite comunicação cross-host

5. macvlan

  • Container recebe IP real da rede física
  • Visível diretamente na LAN
  • Usado para integrações legadas

Conceitos Importantes

Port Mapping

Expor porta do container no host:

docker run -p 8080:80 nginx

Formato:

HOST:CONTAINER


DNS Interno

Em redes customizadas, containers resolvem nome automaticamente.

Exemplo:

docker network create minha-rede
docker run --network minha-rede --name app nginx
docker run --network minha-rede busybox ping app

Service Discovery

  • Containers se comunicam pelo nome
  • Não é necessário conhecer IP

Isolamento de Tráfego

Containers só se comunicam se estiverem na mesma rede.

Conectar container a outra rede:

docker network connect backend app

Comandos

Listar redes:

docker network ls

Criar rede:

docker network create minha-rede

Inspecionar rede:

docker network inspect minha-rede

Boas Práticas

  • Criar redes customizadas por sistema
  • Evitar usar bridge default em produção
  • Evitar --network host em produção
  • Usar nomes de containers como hostname
  • Separar frontend e backend em redes distintas

Modelo Mental

Docker Networking fornece:

  • Virtualização de rede
  • DNS interno
  • Isolamento
  • Segmentação lógica
  • Controle de tráfego

Entender networking é essencial para arquiteturas de microsserviços.