Rede Bridge no Docker: Mecanismo de Rede do docker0

Introdução à Rede Bridge do Docker

A rede bridge do Docker é o modo de rede padrão que permite a comunicação entre contêineres através de uma chave virtual. Ela proporciona um ambiente de rede isolado, onde contêineres podem interagir entre si e com redes externas.

Princípios de Funcionamento da Rede Bridge

  • Criação da bridge virtual: Ao iniciar o daemon do Docker, uma bridge virtual chamada docker0 é configurada no host. Essa bridge atua como uma rede interna, com intervalos IP privados como 172.17.0.0/16 ou 192.168.2.0/24.
  • Interfaces de rede dos contêineres: Quando um contêiner é iniciado, o Docker gera um par virtual de interfaces de rede (veth pair). Uma extremidade é conectada à bridge docker0, e a outra ao namespace de rede do contêiner. Cada contêiner recebe um IP exclusivo da sub-rede da bridge.
  • Tradução de Endereço de Rede (NAT): Para comunicação com redes externas, o Docker aplica NAT. Pacotes originados em contêineres têm seu IP de origem convertido para o IP do host. Pacotes destinados a contêineres são traduzidos para seus IPs inetrnos, ocultando-os do exterior.
  • Mapeamento de portas: A opção -p ou --publish permite vincular uma porta no host a uma porta no contêiner. Por exemplo, docker run -p 8080:80 nginx redireciona a porta 80 do contêiner para a porta 8080 do host.

Benefícios e Restrições da Rede Bridge

Benefícios: Isolamento entre contêineres via IPs privados, facilidade de gerenciamento para ambientes de teste, e segurança adicional proporcionada pelo NAT.

Restrições: Limitação no pool de endereços IP, podendo esgotar-se com muitos contêineres, e potencial sobrecarga de desempenho devido à tradução NAT em cenários de alto tráfego.

Personalizando Redes Bridge

Além da rede padrão, é possível criar bridges customizadas com o comando docker network create. Exemplo:

docker network create --driver bridge rede-experimental

Para conectar um contêiner a essa rede:

docker run --name app-contêiner --net=rede-experimental -d aplicativo-imagem

Conceito de Par Virtual de Ethernet (veth pair)

O veth pair é uma tecnologia do kernel Linux que emparelha duas interfaces de rede virtuais, permitindo comunicação entre namespaces de rede distintos.

  • Definição: Par de interfaces virtuais conectadas diretamente; dados transmitidos em uma extremidade são recebidos na outra.
  • Uso em contêineres: Ao criar um contêiner Docker, um veth pair é gerado. Uma interface é colocada no namespace do contêiner, e a outra na bridge docker0 do host.
  • Configuração: Criação via ip link add veth-alpha type veth peer name veth-beta. Interfaces podem ser movidas para namespaces com ip link set veth-beta netns ns1. Endereços IP são atribuídos com ip addr add, e as interfaces são ativadas com ip link set.
  • Verificação de conectividade: Utilize ping entre namespaces para testar a comunicação.

Tags: Docker rede bridge veth pair Linux networking NAT

Publicado em 8-5 13:33