Como Funcionam os Containers Docker - Diferenças em Relação às Máquinas Virtuais

12 min leitura | 2025.12.10

O que são Containers

Containers são ambientes de execução leves que empacotam uma aplicação e todas as suas dependências. Eles executam processos isolados enquanto compartilham o kernel do sistema operacional host.

Vantagens dos containers: Leves, inicialização rápida, consistência de ambiente, boa eficiência de recursos

Diferenças em Relação às Máquinas Virtuais

Máquina Virtual (VM)

  • Virtualiza completamente um SO guest em cima de um hypervisor
  • Cada VM possui seu próprio kernel
  • Leva minutos para iniciar
  • Consome recursos na ordem de GB

Container

  • Compartilha o kernel do SO host
  • Isolamento a nível de processo
  • Inicia em segundos
  • Consome recursos na ordem de MB

Tecnologias do Kernel Linux

Os containers Docker utilizam duas funcionalidades principais do kernel Linux:

1. Namespaces

Funcionalidade que isola o escopo visível dos processos:

  • PID namespace: Isola IDs de processo
  • Network namespace: Isola a pilha de rede
  • Mount namespace: Isola o sistema de arquivos
  • UTS namespace: Isola o hostname
  • User namespace: Isola IDs de usuário

2. cgroups (Control Groups)

Funcionalidade que limita os recursos que um processo pode usar:

  • Limite de uso de CPU
  • Limite de uso de memória
  • Limite de I/O de disco
  • Limite de largura de banda de rede
# Exemplo de limitação de recursos em container
docker run -d \
  --cpus="1.5" \
  --memory="512m" \
  nginx

Estrutura das Imagens Docker

Imagens Docker são compostas por camadas somente leitura:

  1. Imagem base: SO (ubuntu, alpine, etc.)
  2. Dependências: Bibliotecas e runtimes
  3. Aplicação: Código a ser executado

Vantagem das camadas: Camadas comuns são compartilhadas entre múltiplas imagens, melhorando a eficiência de armazenamento.

Resumo

Containers Docker utilizam namespaces e cgroups do Linux para fornecer ambientes isolados leves e rápidos. Comparados às máquinas virtuais, têm overhead significativamente menor, sendo ideais para arquiteturas modernas de microsserviços.

← Voltar para a lista