Ideia central

Docker é uma plataforma de containerização que empacota uma aplicação junto com todas as suas dependências em uma unidade isolada chamada container. Diferente de uma Virtual Machine, um container compartilha o kernel do sistema operacional host, tornando-o muito mais leve e rápido de inicializar.

Arquitetura

┌─────────────────────────────────────┐
│            Docker Client            │
│         (CLI / Docker Desktop)      │
└──────────────┬──────────────────────┘
               │ REST API
┌──────────────▼──────────────────────┐
│           Docker Daemon             │
│            (dockerd)                │
│                                     │
│  ┌─────────┐ ┌─────────┐ ┌───────┐ │
│  │Container│ │Container│ │  ...  │ │
│  └─────────┘ └─────────┘ └───────┘ │
└─────────────────────────────────────┘
  • Docker Client: interface que o usuário usa (CLI ou Docker Desktop)
  • Docker Daemon (dockerd): processo que gerencia imagens, containers, redes e volumes
  • Docker Registry: repositório de imagens (ex: Docker Hub, GHCR, ECR)

Containers vs VMs

AspectoContainerVirtual Machine
IsolamentoNível de processoNível de hardware
KernelCompartilhadoPróprio (guest OS)
Boot timeMilissegundosSegundos/minutos
TamanhoMBsGBs
OverheadMínimoAlto

Componentes principais

  • Image: blueprint read-only para criar containers
  • Container: instância em execução de uma imagem
  • Dockerfile: receita para construir uma imagem
  • Volume: mecanismo de persistência de dados
  • Network: comunicação entre containers

Conexões

Referências