O ecossistema de containers utiliza Namespaces do kernel Linux para separar contextos operacionais, incluindo isolamento completo de pilhas TCP/IP. Ao inicializar o daemon, três pontes lógicas são provisionadas automaticamente: bridge, host e none. Para cargas de trabalho comerciais ou arquiteturas de microsserviços, a implementação de topologias definidas pelo usuário torna-se imprescindível.
Pilotos de Rede Integrados
O motor oferece quatro drivers nativos que determinam o ciclo de vida e o roteamento do tráfego:
- host: Remove a abstração de interface de rede. O processo containerizado opera diretamente no stack TCP/IP do anfitrião, reutilizando endereços e portas físicas. Oferece throughput máximo, porém compromete o isolamento de escutagem.
- container: Agrupa dois ou mais processos dentro do mesmo contexto de rede. A comunicação interna ocore via interface lopoback, otimizando o consumo de memória e tabelas de roteamento.
- none: Desabilita totalmente o subsistema de conectividade. Aplicável para jobs síncronos que dependem exclusivamente de volumes locais ou para sandboxing criptográfico.
- bridge: Modalidade padrão. Reserva um segmento privado (geralmente RFC 1918), gera pares de dispositivos virtuais
vethe os acopla a uma ponte nativa (docker0). Requisições externas atravessam tradução de endereços antes de alcançarem os pods.
Operação do Driver Bridge
O mecanismo de ponte baseia-se na criação de links duplos veth. Uma ponta reside no namespace do serviço (atribuída como eth0), enquanto a outra conecta-se ao switch virtual da máquina base. O IPAM (Address Management Protocol) assegina subendereço disponível e define o gateway padrao.
A exposição pública depende de manipulação direta no iptables:
- SRC-NAT (MASQUERADE): Reescreve o cabeçalho de origem de pacotes saídos da faixa privada para o endereço físico da placa mestre, garantindo retorno adequado das respostas.
- DST-NAT (DNAT): Intercepta fluxos entrantes nas portas mapeadas (via sinalizador
-p) e os encaminha para o destino interno correspondente.
Isolamento e Política de Contenção
Por padrão, entidades vinculadas à mesma ponte intercambiam dados indiscriminadamente na camada L2. Restrições podem ser aplicadas passando --icc=false durante o boot do daemon. Além disso, regras de filtragem intermediária controlam permisividades entre domínios externos e privados.
Redes Definidas pelo Usuário
Substituir a interface genérica por alocações dedicadas permite resolver nomes de serviço automaticamente via servidor DNS embutido, elimina hardcoding de endereços e oferece governança refinada sobre políticas ingress/egress.
# Provisionamento da sub-rede customizada
$ docker network create --driver bridge \
--subnet 10.30.1.0/24 \
--gateway 10.30.1.1 \
infraestrutura_app
Orquestração dos nós dependentes:
# Instância de cache distribuído
$ docker run -d --name memoria_volátil --network infraestrutura_app redis:7.4-alpine
"# Repositório transacional associado ao domínio lógico
$ docker run -d --name repo_primário --network infraestrutura_app \
-e MYSQL_ROOT_PASSWORD=cripto456 \
-v /opt/db/storage:/var/lib/mysql \
mysql:8.4
Nesta arquitetura, clientes internos utilizam lookup direto pelos identificadores. Servidores DHCP/hosts estáticos deixam de ser requisito.
Configuração de Aplicações Conectadas
Ferramentas de desenvolvimento devem apontar para os alvos internos registrados. Seguem adaptações compatíveis para bases Java e .NET explorando descoberta dinâmica:
# Propriedades do Spring Boot
spring.datasource.url=jdbc:mysql://repo_primário:3306/projeto_base?serverTimezone=UTC
spring.redis.host=memoria_volátil
spring.redis.port=6379
{
"ConnectionStrings": {
"Persistencia": "Server=repo_primário;Port=3306;Uid=admin;Pwd=cripto456;Database=projeto_base;",
"Armazenamento_Rápido": "memoria_volátil:6379"
}
}
Replanejamento de instâncias entre domínios lógicos aocntece sem interrupção de processos ativos, viabilizando expansão horizontal e gestão de capacidade em ambientes orquestrados.