Docker no macOS já foi um pesadelo de performance. Mas com o Colima, Orbstack, e as melhorias do Docker Desktop, nunca foi tão fácil ter contentores Linux a correr nativamente no teu Mac: seja Intel ou Apple Silicon.
Quando o Docker chegou ao macOS, corria dentro de uma VM VirtualBox com uma lentidão que fazia qualquer developer suspirar. Os mounts de diretórios eram especialmente dolorosos: npm install dentro de um contentor demorava minutos.
Hoje, o cenário é completamente diferente. Temos Docker Desktop com engine VM acelerada, Colima (open-source, leve), e o Orbstack (o novo miúdo do bairro que promete performance nativa). Cada um com os seus trade-offs.
Vou mostrar-te:
- Comparação: Docker Desktop vs Colima vs Orbstack
- Dockerfile multi-stage para reduzir tamanho (exemplos Go e Python)
- Docker Compose para desenvolvimento com volumes e networks
- Performance: virtiofs vs gRPC FUSE, cache mounts
- Dicas de limpeza e ferramentas auxiliares
⬆ Como o Docker corre no macOS: VM Linux com contentores por cima
Docker desktop vs Colima vs Orbstack
| Critério | Docker Desktop | Colima | Orbstack |
|---|---|---|---|
| Preço | Grátis para uso pessoal, pago para empresas | Grátis (open-source) | Grátis (uso pessoal), Pro pago |
| Engine | VM própria (HyperKit/Apple Hypervisor) | Lima VM + containerd | VM própria (Apple Hypervisor) |
| Integração macOS | Total (GUI, settings, menu bar) | CLI only | GUI + CLI, menu bar |
| Performance | Boa (virtiofs). Melhorou muito com Apple Silicon | Muito boa (virtiofs) | Excelente (filesystem nativo) |
| Consumo RAM | Médio (~2-3 GB em idle) | Baixo (~1 GB) | Baixo (~1-2 GB) |
| Features extra | Docker Scout, Extensions, Kubernetes | Kubernetes opcional, Docker socket | Docker + Podman, redes simplificadas |
| Suporte Apple Silicon | Nativo (ARM64) | Nativo | Nativo |
| Atualizações | Automáticas via app | brew upgrade colima | Automáticas via app |
A minha escolha: Para projetos pessoais, uso Colima: é leve, grátis e faz o que preciso. Para clientes que exigem uma GUI e suporte, Docker Desktop é a escolha segura. O Orbstack é o mais promissor dos três, com performance realmente impressionante.
Instalação rápida com Colima
Dockerfile multi-stage para imagens pequenas
Multi-stage builds são a forma mais eficaz de reduzir o tamanho das imagens. O princípio é simples: usa uma imagem grande para compilar/construir, e uma imagem mínima para correr.
Exemplo Go (de 1.2 GB para 15 MB)
Exemplo Python (de 900 MB para 120 MB)
⬆ Diferença de tamanho entre single-stage e multi-stage para Go e Python
Docker compose para desenvolvimento
Dica: O uso de profiles no Compose permite ter serviços que só sobem quando queres. Por exemplo, docker compose --profile dev up sobe app + db, mas docker compose --profile staging up pode incluir um sidecar de monitoring.
Performance no macos: virtiofs vs grpc fuse
O pesadelo do Docker no macOS sempre foram os bind mounts: a ponte entre o filesystem do Mac e o da VM Linux. Três tecnologias competem por este lugar:
| Tecnologia | Performance | Disponível em |
|---|---|---|
| osxfs (legacy) | Lenta (10-50 MB/s) | Docker Desktop (pré-2022) |
| gRPC FUSE | Razoável (50-200 MB/s) | Docker Desktop (padrão atual) |
| virtiofs | Rápida (500-1500 MB/s) | Colima, Docker Desktop (selecionável), Orbstack |
Para ativar virtiofs no Colima:
Para cache mounts: acelera imenso builds que repetem dependências:
Limpeza e manutenção
Recapitulando
- Escolhe o runtime certo: Docker Desktop (completo), Colima (leve), Orbstack (rápido)
- Multi-stage builds: Go de 1.2 GB → 15 MB, Python de 900 MB → 120 MB
- Docker Compose com profiles para ambientes dev/staging
- virtiofs para performance de bind mounts no macOS
- Cache mounts para builds mais rápidas com BuildKit
- docker system prune e docker scout para manutenção e segurança
Docker no macOS nunca foi tão bom. Escolhe o runtime que mais se adequa ao teu fluxo, otimiza os teus Dockerfiles com multi-stage, e usa virtiofs para montagens rápidas. Os dias de esperar 5 minutos por um npm install já lá vão.
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário