Loading...
Loading...
Configure a rede (networking) do Docker para containers, incluindo bridge, overlay e service discovery
npx skill4agent add promovaweb/skills-devops promovaweb-devops-docker-networking| 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 |
| 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 |
# 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:alpineservices:
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# 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# Criar a rede pública do Swarm (Overlay)
docker network create \
--driver overlay \
--attachable \
--opt encrypted \
network_swarm_public# 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| Erro | Causa | Solução |
|---|---|---|
| Erro de digitação ou excluída | Crie a rede |
| Conflito de porta | Altere a porta |
| Rede errada | Verifique a participação na rede |
| Serviço não está pronto | Adicione health checks |
docker network lsdocker network inspect <net>docker exec app nslookup backenddocker network lsdocker inspect <container>nslookupdocker port <container># 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# 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