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
| Aspecto | Container | Virtual Machine |
|---|---|---|
| Isolamento | Nível de processo | Nível de hardware |
| Kernel | Compartilhado | Próprio (guest OS) |
| Boot time | Milissegundos | Segundos/minutos |
| Tamanho | MBs | GBs |
| Overhead | Mínimo | Alto |
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
- docker-imagens - Como imagens são construídas e organizadas
- docker-containers - Ciclo de vida e gerenciamento de containers
- docker-redes - Comunicação entre containers
- docker-volumes - Persistência de dados
- docker-compose - Orquestração de múltiplos containers
- Docker