1.1 Driver de Rede Bridge
Os drivers de rede do Docker permitem que os containers interajam entre si e com redes externas. O Docker oferece vários drivers de rede, cada um com suas características e destinado a cenários de uso específicos. Nesta aula, a gente vai dar uma olhada em quatro dos principais drivers de rede: bridge, host, none e overlay.
O driver de rede bridge é o driver de rede padrão no Docker. Ele cria uma rede interna privada, na qual os containers podem se comunicar uns com os outros. Essa rede é isolada da rede externa do host.
Características:
- Containers conectados à rede
bridgepodem interagir entre si pelos endereços IP. - Redes externas não podem interagir diretamente com os containers na rede
bridge, a menos que o redirecionamento de portas esteja configurado. - Fácil de usar para cenários de desenvolvimento e teste locais.
Exemplo de uso:
Quando você cria um container sem especificar uma rede, ele se conecta automaticamente à rede bridge.
docker run -d --name my_container nginx
Para configurar o redirecionamento de porta, você utiliza a flag -p.
docker run -d -p 8080:80 --name my_container nginx
1.2 Driver de rede Host
O driver de rede host permite que o container use diretamente a stack de rede da máquina host. Isso significa que o container terá o mesmo endereço IP que o host e poderá usar todas as interfaces de rede dele.
Características:
- Containers que usam o driver de rede
hostfuncionam mais rápido devido à redução de overheads na virtualização de rede. - Os containers têm acesso às mesmas interfaces de rede que o host, o que pode aumentar os riscos de segurança.
- Aplicável para cenários que requerem alta performance de rede ou configurações específicas de rede.
Exemplo de uso:
docker run -d --network host --name my_container nginx
1.3 Driver de rede None
O driver de rede none desativa todas as funcionalidades de rede do container. Um container conectado à rede none não tem interface de rede, o que o isola completamente de outros containers e redes.
Características:
- Isolamento completo do container de todas as redes.
- Útil para containers que não precisam de rede, como para executar tarefas que não dependem da rede.
Exemplo de uso:
docker run -d --network none --name my_container busybox
1.4 Driver de rede Overlay
O driver de rede overlay é usado pra criar uma rede distribuída que cobre vários hosts Docker. Esse driver é frequentemente usado no Docker Swarm ou Kubernetes pra garantir a comunicação de rede entre os containers em diferentes hosts.
Características:
- Garante comunicação entre containers em hosts diferentes.
- Requer configuração de clustering, como Docker Swarm.
- Permite criar redes virtuais sobre redes existentes, garantindo um alto nível de isolamento e segurança.
Exemplo de uso:
Pra usar o driver overlay, primeiro é necessário criar um cluster Docker Swarm.
1. Inicializar o Docker Swarm:
docker swarm init
2. Criar a rede overlay:
docker network create -d overlay my_overlay_network
3. Rodar containers conectados à rede overlay:
docker service create --name my_service --network my_overlay_network nginx
1.5 Comparação dos drivers de rede
Comparação de diferentes drivers de rede
| Driver de Rede | Isolamento | Desempenho | Aplicabilidade | Características |
|---|---|---|---|---|
| bridge | Alta | Moderado | Redes locais | Rede isolada por padrão |
| host | Baixa | Alta | Desempenho | Pilha de rede compartilhada com o host |
| none | Total | Máximo | Isolamento | Isolamento completo da rede |
| overlay | Alta | Alta | Redes distribuídas | Comunicação entre containers em hosts diferentes |
Uso de drivers de rede
-
Bridge: use para aplicações locais e testes quando os containers precisam interagir entre si, mas devem estar isolados da rede externa. -
Host: utilize para aplicações que exigem alto desempenho de rede ou configurações específicas de rede, onde o isolamento de rede não é uma prioridade. -
None: use para containers totalmente isolados que não precisam de interação de rede. -
Overlay: use para aplicações distribuídas rodando em um cluster, onde é necessário garantir comunicação entre containers em hosts diferentes.
GO TO FULL VERSION