Docker: Isolamento de Rede com Bridge, Host e Overlay

Essa seção aborda como o Docker lida com o isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. de rede em diferentes tipos de network drivers: bridge, host e overlay. Entender as propriedades dessas redesConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. é fundamental para desenvolver aplicações containerizadas escaláveis, seguras e de fácil gerenciamento. Vamos explorar cada tipo de rede em detalhes.

Visão Geral do Isolamento de Rede no Docker🔗

O isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. de rede no Docker permite que cada container funcione em um espaço de rede praticamente independente, controlando como os contêineres se comunicam entre si e com aplicações externas. Através das diferentes opções de network drivers, é possível escolher a forma adequada de isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. para cada cenário.

A criação e o gerenciamento de redes no DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. seguem a linha de comando:

docker network create \
  --driver <tipo-de-driver> \
  <nome-da-rede>

Cada container conectado a essa rede passa a usar as configurações de isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. associadas. A seguir, veremos os principais drivers de rede: bridge, host e overlay.

Bridge Network🔗

A redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. do tipo bridge é o padrão do DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. quando não especificamos outro driver. Os contêineres conectados a uma rede bridge compartilham uma ponte virtual, gerenciada pela docker0 (ou outra interface criada para cada redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras.).

Como Funciona

1. Interface Virtual: O DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. cria uma interface de rede virtual (veth pair) que conecta o contêiner à interface gerenciada pelo host (ex.: docker0).

2. IsolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. Interno: Por padrão, os contêineres estão isoladosCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. de redes externas, mas podem se comunicar entre si dentro dessa bridge.

3. Mapeamento de Portas: Para expor serviçosConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. externamente, é necessário mapear portas usando a opção -p <porta-host>:<porta-container> no comando docker runCriando e gerenciando containers Docker: guia básicoCriando e gerenciando containers Docker: guia básicoAprenda a criar e gerenciar contêineres Docker com comandos essenciais, boas práticas e dicas de segurança, garantindo aplicações isoladas e escaláveis..

Quando Usar

Exemplo de Criação

# Criando uma rede do tipo bridge
docker network create --driver bridge minha_rede_bridge
# Executando um contêiner conectado a essa rede
docker run -d --name app1 --network minha_rede_bridge nginx

Host Network🔗

O driver host remove praticamente todo o isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. de rede, pois faz com que o contêiner use a stack de rede do próprio sistema anfitrião. Em outras palavras, o contêiner passa a compartilhar o namespace de redeConceitos fundamentais de networking em DockerConceitos fundamentais de networking em DockerExplore como o Docker gerencia o networking entre contêineres, utilizando drivers, isolamento e mapeamento de portas para conexões seguras. do host.

Como Funciona

1. Acesso Direto: O contêiner acessa diretamente as interfaces de redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. do host.

2. Sem Overhead de RedeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras.: Não há criação de interfaces veth, eliminando a sobrecarga de NAT e roteamento.

3. Conflitos de Porta: É necessário cuidado ao usar portas, pois elas passam a ser compartilhadas com o host.

Quando Usar

Exemplo de Execução

# Executando um contêiner usando a rede do host
docker run -d --network host --name app_host nginx

Overlay Network🔗

A redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. do tipo overlay é usada para conectar múltiplos contêineres distribuídos em diferentes hosts DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos., formando uma rede lógica única e segura. Para funcionar, geralmente é necessário habilitar o modo de orquestração (por exemplo, DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. Swarm), pois cada host precisa se comunicar e manter a coesão da rede virtual.

Como Funciona

1. Distribuição Entre Hosts: Cada nó do cluster DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. Swarm mantém uma rede virtual overlay, permitindo que contêineres em hosts diferentes se vejam como se estivessem na mesma sub-redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. local.

2. Encapsulamento: O tráfego é encapsulado para viajar entre hosts, preservando a segurança e o isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação..

3. Escalabilidade: Permite escalar aplicações distribuídas facilmente, simplificando a configuração de serviçosConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. que precisam ser executados em diversos nós.

Quando Usar

Exemplo de Criação

Se estivermos em um cluster DockerDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. Swarm, basta criar a rede:

docker network create \
  --driver overlay \
  --attachable \
  minha_rede_overlay

Depois, podemos conectar serviçosConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras. nessa rede ao criar um service:

docker service create \
  --name app_overlay \
  --network minha_rede_overlay \
  nginx

Comparando Bridge, Host e Overlay🔗

A tabela a seguir destaca as principais diferenças entre esses três tipos de redeConfiguração de aplicações multi-container com Docker ComposeConfiguração de aplicações multi-container com Docker ComposeConfigure múltiplos contêineres com Docker Compose e otimize a comunicação entre serviços, volumes e redes para aplicações escaláveis e seguras.:

CaracterísticaBridgeHostOverlay
Isolamento de RedeAlto (rede virtual interna)Baixo (compartilha rede do host)Médio/Alto (entre hosts no cluster)
DesempenhoBom (isolamento via bridge)Muito alto (sem overhead de NAT)Bom (com overhead de encapsulamento)
Uso de Portas no HostNecessário mapeamento de portasCompartilha portas do sistema anfitriãoNecessário mapear portas em cada nó do cluster
Escopo de OperaçãoGeralmente limitado a um único hostLocal (mesmo host)Integrado a um cluster distribuído
Complexidade de ConfiguraçãoBaixa a moderadaBaixaModerada (exige configuração de orquestração)

Considerações Finais🔗

A escolha entre bridge, host e overlay depende do contexto:

O uso correto desses drivers fornece o isolamentoCriando redes personalizadas em Docker: passo a passoCriando redes personalizadas em Docker: passo a passoAprenda como criar e gerenciar redes Docker personalizadas para isolar containers, controlar endereços IP e otimizar a comunicação em sua aplicação. necessário e facilidade de gerenciamento para aplicações containerizadas, garantindo escalabilidade, segurança e performanceDocker vs Máquinas Virtuais: principais diferenças e casos de usoDocker vs Máquinas Virtuais: principais diferenças e casos de usoDescubra neste tutorial as principais diferenças entre Docker e Máquinas Virtuais, explorando desempenho, arquitetura e casos de uso práticos. adequadas às exigências de cada projeto.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados