promovaweb-devops-docker-networking

Installation
SKILL.md

Skill de Docker Networking

Domine os conceitos e a configuração de rede (networking) do Docker para comunicação entre containers, service discovery e isolamento de rede.

Propósito

Configurar e solucionar problemas em redes Docker para ambientes de desenvolvimento e produção com isolamento adequado e service discovery.

Parâmetros

Parâmetro Tipo Obrigatório Padrão Descrição
driver enum Não bridge bridge/overlay/host/macvlan
subnet string Não - CIDR de sub-rede personalizada
internal boolean Não false Rede apenas interna

Drivers de Rede

Driver Caso de Uso Multi-Host Criptografia
bridge Host único, padrão Não Não
overlay Swarm, multi-host Sim Opcional
host Performance máxima Não N/A
macvlan Rede física Não Não
none Desabilitar rede Não N/A

Exemplos de Configuração

Rede Bridge Personalizada

# Criar rede com sub-rede personalizada
docker network create \
  --driver bridge \
  --subnet 172.28.0.0/16 \
  --gateway 172.28.0.1 \
  my_network

# Executar container na rede
docker run -d --name app \
  --network my_network \
  nginx:alpine

Networking no Docker Compose (Swarm)

services:
  frontend:
    image: nginx:alpine
    networks:
      - network_swarm_public
    ports:
      - "80:80"

  backend:
    image: node:20-alpine
    networks:
      - network_swarm_public
      - private
    expose:
      - "3000"

  database:
    image: postgres:16-alpine
    networks:
      - private  # Apenas interna

networks:
  network_swarm_public:
    external: true  # Rede pública compartilhada no Swarm
  private:
    driver: overlay
    internal: true  # Sem acesso externo

Service Discovery

# Containers podem alcançar uns aos outros pelo nome do serviço
services:
  app:
    image: myapp
    networks:
      - network_swarm_public
    environment:
      # Use o nome do serviço como hostname
      DATABASE_HOST: database
      CACHE_HOST: redis

  database:
    image: postgres:16-alpine
    networks:
      - network_swarm_public

  redis:
    image: redis:alpine
    networks:
      - network_swarm_public

Rede Overlay (Swarm)

# Criar a rede pública do Swarm (Overlay)
docker network create \
  --driver overlay \
  --attachable \
  --opt encrypted \
  network_swarm_public

Mapeamento de Portas

# Mapear host:container
docker run -p 8080:80 nginx

# Vincular a uma interface específica
docker run -p 127.0.0.1:8080:80 nginx

# Porta do host aleatória
docker run -P nginx

# Porta UDP
docker run -p 53:53/udp dnsserver

Tratamento de Erros

Erros Comuns

Erro Causa Solução
network not found Erro de digitação ou excluída Crie a rede
address in use Conflito de porta Altere a porta
cannot reach Rede errada Verifique a participação na rede
DNS failed Serviço não está pronto Adicione health checks

Estratégia de Fallback

  1. Verifique se a rede existe: docker network ls
  2. Verifique a participação do container: docker network inspect <net>
  3. Teste o DNS: docker exec app nslookup backend

Solução de Problemas (Troubleshooting)

Checklist de Depuração

  • Rede criada? docker network ls
  • Container conectado? docker inspect <container>
  • DNS resolvendo? nslookup a partir do container
  • Porta mapeada? docker port <container>

Comandos de Diagnóstico

# Listar redes
docker network ls

# Inspecionar rede
docker network inspect my_network

# Testar conectividade
docker exec app ping -c 3 database

# Verificar DNS
docker exec app nslookup backend

# Visualizar mapeamentos de porta
docker port nome_do_container

Depuração de Rede (Network Debugging)

# Entrar no namespace de rede do container
docker exec -it app sh

# Verificar resolução de DNS
cat /etc/resolv.conf
nslookup database

# Verificar conectividade
ping -c 3 backend
curl http://backend:3000/health
Related skills
Installs
9
GitHub Stars
4
First Seen
Mar 28, 2026