5 alternativas ao Docker para desenvolvimento local
Compare cinco alternativas ao Docker Desktop para desenvolvimento local: Podman, OrbStack, Colima, Rancher Desktop e Lima. Confira sistemas, custos e compatibilidade com Docker e Compose.
As cinco alternativas ao Docker Desktop que valem a pena testar para desenvolvimento local são Podman com Podman Desktop, OrbStack, Colima, Rancher Desktop e Lima com nerdctl. Apenas algumas delas mantêm o Docker Engine de verdade por trás dos seus comandos docker.
Talvez as ventoinhas disparem assim que o contêiner do Postgres sobe. Talvez alguém do financeiro tenha perguntado quantas licenças do Docker Desktop a empresa paga. Seja qual for o motivo, você quer saber qual substituto ainda vai rodar seus scripts com docker run e seu arquivo do Compose.
Esta comparação não aborda os conceitos básicos de imagens e contêineres, que já são tratados no guia para iniciantes sobre imagens e contêineres Docker. Cada ferramenta abaixo é avaliada pelos mesmos critérios: sistemas operacionais, custo, engine, compatibilidade com a CLI do docker, compatibilidade com o Compose, para quem ela é indicada e os comandos para instalá-la e rodar o primeiro contêiner.
Principais conclusões
- O Docker Desktop é gratuito para empresas com menos de 250 funcionários e faturamento anual inferior a US$ 10 milhões. Empresas maiores precisam de uma assinatura paga Pro, Team ou Business.
- O OrbStack e o Colima (no modo padrão) rodam o Docker Engine em uma VM mais leve. O Podman e o containerd com nerdctl substituem a engine por completo.
- No macOS e no Windows, todas as ferramentas desta comparação ainda rodam contêineres Linux dentro de uma máquina virtual.
- O
podman composeexiste, mas delega o trabalho a um provider externo (docker-compose ou podman-compose), e um dos dois precisa estar instalado. - Se o
dockerparar de funcionar depois que você trocar de ferramenta, executedocker context lspara ver para qual endpoint de engine a CLI está apontando.
Por que os desenvolvedores buscam alternativas ao Docker no ambiente local?
Os desenvolvedores costumam abandonar o Docker Desktop por um destes três motivos: licenciamento, consumo de recursos ou velocidade de compartilhamento de arquivos no macOS.
- Licença. Pelos termos de licença do Docker Desktop, o aplicativo é gratuito para uso pessoal, educacional, projetos open source não comerciais e empresas com menos de 250 funcionários e faturamento anual inferior a US$ 10 milhões. Uma empresa que ultrapasse qualquer um desses limites precisa de uma assinatura paga Pro, Team ou Business.
- Memória e bateria. No macOS e no Windows, o Docker Desktop mantém sua VM Linux em execução enquanto houver qualquer contêiner ativo, e essa VM consome memória e energia mesmo quando os contêineres estão ociosos. O modo Resource Saver do Docker Desktop só desliga a VM depois que nenhum contêiner é executado por um certo tempo (cinco minutos, por padrão).
- Bind mounts. No macOS, os arquivos montados do host em um contêiner precisam atravessar a fronteira da VM. A própria documentação do Docker observa que os bind mounts podem ficar lentos à medida que a base de código cresce, e foi por isso que o Docker Desktop adicionou os synchronized file shares. Árvores grandes de
node_modulese file watchers são onde a lentidão aparece.
O que cada alternativa ao Docker realmente substitui?
O Docker Desktop é um aplicativo desktop que reúne uma máquina virtual Linux, o Docker Engine e uma interface gráfica. Substituir o Docker Desktop não significa substituir o Docker Engine. As alternativas se dividem em dois grupos:
| Grupo | Ferramentas | Com o que o seu comando docker se comunica |
|---|---|---|
| Docker Engine em uma VM mais leve | OrbStack, Colima (runtime padrão), Rancher Desktop (modo moby) | Um daemon Docker de verdade |
| Engine substituída | Podman, Lima/containerd com nerdctl, Rancher Desktop (modo containerd) | A API compatível com Docker do Podman ou, no caso do nerdctl, com nada. Na maior parte do tempo, você usa uma CLI que copia a sintaxe do Docker |
No grupo do Docker Engine, a CLI do docker e o Compose continuam se comunicando com um daemon Docker. No grupo da engine substituída, a compatibilidade com o Docker vem de uma camada de linha de comando que reproduz a sintaxe do Docker e, no caso do Podman, de um socket que responde a chamadas da API do Docker. No macOS e no Windows, todas as ferramentas aqui ainda rodam contêineres Linux dentro de uma VM. Trocar de ferramenta muda a forma como essa VM é gerenciada, não o fato de ela existir.
Por que o docker quebra depois da troca?
A CLI do docker se conecta ao socket indicado pela variável DOCKER_HOST ou pelo contexto do Docker ativo. Quando os comandos falham depois que você instala uma alternativa, normalmente a CLI está apontando para um socket sem nenhuma engine por trás. Nosso guia sobre como resolver erros de “Docker daemon not running” explica cada mensagem de erro.
docker context ls # the active endpoint is marked with *
docker context use colima # point the CLI at another engine
Você pode testar uma alternativa sem desinstalar o Docker Desktop. Troque de contexto para experimentar a nova ferramenta e depois volte.
Um arquivo do Compose para testar cada ferramenta
Use um único arquivo mínimo para verificar cada ferramenta. Passe-o antes pelo validador de YAML, para que qualquer falha venha da ferramenta e não de um erro de digitação.
# compose.yaml
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
ports:
- "5432:5432"
Comparação das alternativas ao Docker
| Ferramenta | SO | Custo | Engine | CLI do docker | Compose |
|---|---|---|---|---|---|
| Podman + Podman Desktop | macOS, Windows, Linux | Gratuito, open source | Podman | Via alias ou socket da API | podman compose + provider |
| OrbStack | macOS | Gratuito para uso pessoal, pago para uso comercial | Docker Engine | Sim | Sim, incluído |
| Colima | macOS, Linux | Gratuito, open source | Docker (padrão) | Sim, instalada separadamente | Instalar o Compose separadamente |
| Rancher Desktop | macOS, Windows, Linux | Gratuito | containerd ou moby | No modo moby | nerdctl compose ou docker compose |
| Lima + nerdctl | macOS, Linux | Gratuito, open source | containerd | Não (nerdctl) | nerdctl compose |
Podman com Podman Desktop
O Podman substitui a engine do Docker e não tem daemon. O Podman Desktop é gratuito e open source para macOS, Windows e Linux. No Mac e no Windows, você tem um comando podman nativo, e seus contêineres rodam em uma VM Linux que o Podman chama de Podman machine.
- CLI do docker: os comandos do Podman usam a sintaxe do Docker, então
alias docker=podmancobre a maior parte do uso diário. No Mac e no Windows, o Podman também aceita clientes da API do Docker, então você pode apontar a CLI do docker de verdade e ferramentas baseadas em Docker para o socket dele. - Compose: o
podman composevem embutido, mas é um wrapper simples que repassa o trabalho ao docker-compose ou ao podman-compose. Instale um deles antes. - Indicado para: equipes que precisam de uma única ferramenta gratuita no macOS, Windows e Linux.
brew install podman
podman machine init
podman machine start
podman run --rm hello-world
podman compose up
A documentação de instalação do Podman recomenda o instalador oficial em vez do Homebrew no macOS. O Podman Desktop tem seu próprio instalador.
OrbStack
O OrbStack é um aplicativo exclusivo para macOS. Ele inclui uma engine Docker e as ferramentas do Compose e busca se comportar como o Docker Desktop, então a CLI do docker e o Compose funcionam sem alterações.
- Custo: pelos termos de licenciamento do OrbStack, ele é gratuito para uso pessoal. Uso como freelancer, em empresas e em organizações sem fins lucrativos exige uma licença paga por usuário.
- Compose: incluído.
- Indicado para: equipes que usam apenas Mac e querem o fluxo de trabalho do Docker Desktop com uma camada de VM diferente. Configurações por projeto, como Dev Containers para desenvolvimento local, também continuam funcionando.
brew install --cask orbstack
docker run --rm hello-world
docker compose up
Colima
O Colima é uma ferramenta de linha de comando gratuita para macOS (Intel e Apple Silicon) e Linux. Com o runtime Docker padrão, o Colima roda a engine do Docker dentro de uma VM. Ele também oferece os runtimes containerd e Incus.
- CLI do docker: instalada separadamente.
- Compose: não vem incluído. Instale a fórmula
docker-composedo Homebrew e depois crie um link para ela em~/.docker/cli-plugins, para que odocker composefuncione. - Indicado para: desenvolvedores que vivem no terminal e não precisam de interface gráfica.
brew install colima docker docker-compose
mkdir -p ~/.docker/cli-plugins
ln -sfn "$(brew --prefix)/opt/docker-compose/bin/docker-compose" ~/.docker/cli-plugins/docker-compose
colima start
docker run --rm hello-world
docker compose up
Se você iniciar o Colima com o runtime containerd, os contêineres são executados com colima nerdctl em vez de docker.
Rancher Desktop
O Rancher Desktop roda no macOS (Intel e Apple Silicon), Windows e Linux. Ele pode usar o containerd ou o dockerd (moby) como engine. Escolher o moby habilita a API do Docker, então a CLI do docker funciona sem aliases.
- Compose: o tutorial sobre contêineres aborda o Compose tanto com
nerdctl composequanto comdocker compose. - Ressalvas: apenas um runtime fica ativo por vez. As imagens baixadas em um runtime não ficam disponíveis depois que você muda para o outro. O Kubernetes embutido pode ser desativado.
- Indicado para: equipes multiplataforma que querem uma interface gráfica e a API do Docker.
rdctl set --container-engine.name=moby
docker run --rm hello-world
Você também pode fazer a mesma alteração no aplicativo, em Preferences > Container Engine, conforme descrito na documentação de preferências da engine.
Lima com containerd e nerdctl
O Lima inicia máquinas virtuais Linux com compartilhamento de arquivos e redirecionamento de portas automáticos. O template padrão roda o containerd. O Lima também oferece suporte a hosts que não são macOS, como Linux e NetBSD.
- CLI do docker: não é usada. O nerdctl reproduz os comandos do Docker, e você o chama como
lima nerdctl. - Compose: o
nerdctl composeimplementa a Compose Specification. Alguns campos não são implementados, comolinks, conforme listado nas notas sobre Compose do nerdctl. - Indicado para: desenvolvedores que querem componentes open source para montar por conta própria. O Lima também tem um template
docker, caso você prefira rodar o Docker Engine.
brew install lima
limactl start
lima nerdctl run --rm hello-world
lima nerdctl compose up
Como escolher uma alternativa ao Docker?
Seu sistema operacional elimina várias alternativas ao Docker antes mesmo de os recursos entrarem em jogo. O OrbStack roda apenas no macOS, e o Colima não tem versão para Windows. Para uma única ferramenta no macOS, Windows e Linux, restam o Podman Desktop e o Rancher Desktop. Se seus arquivos do Compose e scripts precisam rodar sem alterações, escolha uma ferramenta que rode o Docker Engine: OrbStack, Colima ou Rancher Desktop no modo moby. Se você quer abandonar de vez o daemon do Docker, escolha o Podman.
Conclusão
A pergunta que importa é se a ferramenta mantém o Docker Engine ou o substitui. Essa única diferença determina se seus comandos docker e arquivos do Compose continuam funcionando sem alterações. Escolha a ferramenta adequada ao seu sistema operacional e à sua situação de licenciamento, rode o compose.yaml acima nela e verifique o docker context ls antes de remover o Docker Desktop.
Perguntas frequentes
A licença do Docker Desktop se aplica ao Docker Engine no Linux?
Não. O Docker Engine é open source sob a Apache License 2.0, então o uso comercial não tem limite de funcionários nem de faturamento. Os limites de 250 funcionários e US$ 10 milhões vêm do Docker Subscription Service Agreement, que abrange o Docker Desktop e a Engine distribuída dentro dele. Em uma estação de trabalho Linux, instalar o Docker Engine diretamente evita a questão da licença do Desktop e a camada extra de VM.
Minhas imagens e volumes do Docker Desktop são transferidos quando troco de ferramenta?
Apenas o OrbStack faz a migração por você. Após a instalação, ele oferece copiar os contêineres, volumes e imagens do Docker Desktop, e a opção continua disponível em File > Migrate Docker Data. Ele faz uma cópia, então os dados originais permanecem onde estão. Para Colima, Podman ou Rancher Desktop, exporte as imagens com docker save, carregue-as na nova engine e faça backup dos volumes nomeados como arquivos tar.
O Testcontainers funciona com o Podman em vez do Docker?
Sim, por meio do socket da API compatível com Docker do Podman. Defina DOCKER_HOST apontando para o socket do Podman. No macOS, o comando podman machine inspect informa o caminho, e você também define TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE como /var/run/docker.sock. No Linux, o socket é podman/podman.sock dentro de XDG_RUNTIME_DIR. No modo rootless, defina TESTCONTAINERS_RYUK_DISABLED=true para desativar o contêiner de limpeza Ryuk. A equipe do Testcontainers não testa ativamente runtimes alternativos, então alguns recursos podem não funcionar.
O VS Code Dev Containers pode usar o Podman em vez do Docker?
Sim. Defina a configuração Docker Path do Dev Containers (dev.containers.dockerPath) como podman no Linux, Windows ou macOS. A extensão executa comandos da CLI de contêineres e nunca se comunica diretamente com um daemon. O VS Code descreve o Podman 5 e versões posteriores como amplamente compatíveis com a CLI do Docker, mas não oferece suporte oficial a outras CLIs compatíveis com Docker. Dev containers baseados em Compose também precisam de um provider do Compose configurado.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.
Star on GitHub12k