Learn Docker Help

Docker Networking: O Guia Definitivo 🌐

╔════════════════════════════════════════════╗ β•‘ DOCKER NETWORK TOPOLOGY β•‘ β•‘ β•‘ β•‘ [Container A] ←→ [Bridge] ←→ [Host] β•‘ β•‘ ↑ ↑ ↑ β•‘ β•‘ [Container B] [Overlay] [MacVLAN] β•‘ β•‘ β•‘ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

Network Drivers πŸš—

Bridge Network (Default)

# Criar rede bridge docker network create --driver bridge minha-rede # Conectar container docker run -d --network minha-rede nginx # Inspecionar rede docker network inspect bridge

Host Network

# Usar rede do host docker run --network host nginx # Verificar portas netstat -tulpn

None Network

# Sem rede docker run --network none alpine

Overlay Network

# Criar rede overlay docker network create \ --driver overlay \ --attachable \ --subnet=10.0.9.0/24 \ overlay-net # Habilitar criptografia docker network create \ --driver overlay \ --opt encrypted \ secure-overlay

Macvlan

# Criar rede macvlan docker network create \ -d macvlan \ --subnet=192.168.1.0/24 \ --gateway=192.168.1.1 \ -o parent=eth0 \ macvlan-net

Network Configuration πŸ”§

Port Mapping

# Mapear porta ΓΊnica docker run -p 8080:80 nginx # MΓΊltiplas portas docker run \ -p 80:80 \ -p 443:443 \ nginx # UDP ports docker run -p 53:53/udp dns-server # Range de portas docker run -p 8000-8010:8000-8010 app

DNS Configuration

# Configurar DNS docker run --dns 8.8.8.8 nginx # Arquivo de configuraΓ§Γ£o cat /etc/docker/daemon.json { "dns": ["8.8.8.8", "8.8.4.4"], "dns-search": ["example.com"] }

Network Security πŸ”’

Network Policies

# Network policy bΓ‘sica apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny spec: podSelector: {} policyTypes: - Ingress - Egress

Firewall Rules

# Regras iptables iptables -I DOCKER-USER -i ext_if ! \ -s 192.168.1.0/24 -j DROP # Permitir portas especΓ­ficas iptables -A DOCKER-USER -p tcp \ --dport 80 -j ACCEPT

Network Troubleshooting πŸ”

Debug Commands

# Inspecionar rede docker network inspect bridge # Listar endpoints docker network inspect -f \ '{{range .Containers}}{{.Name}} {{.IPv4Address}}{{end}}' \ bridge # EstatΓ­sticas docker stats --format \ "table {{.Container}}\t{{.NetIO}}"

Network Tools

# tcpdump docker run --net=container:target \ nicolaka/netshoot \ tcpdump -i any port 80 # netstat docker exec container netstat -tulpn # ping test docker run --rm busybox ping container_name

Docker Compose Networking πŸ“¦

Basic Configuration

version: '3.8' services: web: networks: - frontend - backend api: networks: backend: ipv4_address: 172.16.238.10 networks: frontend: driver: bridge backend: driver: bridge internal: true

Advanced Features

networks: overlay_net: driver: overlay driver_opts: encrypted: "true" ipam: driver: default config: - subnet: 10.0.9.0/24

Network Monitoring πŸ“Š

Basic Monitoring

# Network stats docker stats --format \ "table {{.Name}}\t{{.NetIO}}" # Network events docker events --filter 'type=network' # Container connections docker exec container ss -tulpn

Advanced Monitoring

# Detailed metrics docker run --rm \ --net=container:target \ nicolaka/netshoot \ iftop # Network profiling docker run --rm \ --net=container:target \ nicolaka/netshoot \ nethogs

Best Practices πŸ’‘

Network Design

  1. Use user-defined networks

  2. Isolate sensitive services

  3. Implement network policies

  4. Monitor network traffic

  5. Regular security audits

Performance Tips

  1. Use host network when possible

  2. Minimize network overhead

  3. Optimize DNS resolution

  4. Use appropriate drivers

  5. Monitor bandwidth usage

Waifu Network Tips πŸŽ€

Próximos Passos 🎯

  1. Container Security

  2. Docker Compose

  3. Performance Tuning

Referências πŸ“š

16 abril 2025