Docker em MacOS (Intel ou M1) - alternativa ao Docker Desktop
Docker em MacOS
Desde Fevereiro de 2022, a popular ferramenta para rodar Docker em MacOS e Windows - Docker Desktop - passou a ter um plano pago. A ferramenta continua gratuita para estudantes, projetos open-source sem fins lucrativos ou empresas pequenas (<250 colaboradores e <$10M usd).
Mas além da motivação de usar um produto gratuito, existe quem tenha motivação de não usar ferramentas proprietárias e apoiar soluções open source. Assim, venho apresentar algumas soluções.
TDLR
Podem usar o colima.
É super simples e funciona em processadores Intel e M1, além de suportar kubernetes.
O que faz o Docker Desktop
Quando falamos de rodar containers Docker em MacOS ou Windows, normalmente falamos de rodar containers Linux nestes Sistemas. *
Por trás dos panos, o Docker Desktop é responsável por rodar um ambiente de virtualização Linux, além de criar todas as interfaces (de forma bastante bem feita) entre o Host OS e a virtualização em Linux.
Esta integração garante que podemos simplesmente rodar um servidor HTTP em docker e conseguir acessar ele através do meu navegador.
* Existem containers Docker em Windows, sem virtualização Linux, mas está fora do escopo deste artigo
Alternativas
É necessário uma alternativa que consiga:
- gerenciar uma virtualização Linux
- instalar e configurar o servidor Docker dentro da VM
- disponibilizar uma conexão para o servidor Docker (dentro da VM)
- gerenciar a ponte entre a rede do Host OS e a virtualização (port forwarding)
- volumes (mount entre o Host e a VM)
- suporte a docker-compose
Colima
https://github.com/abiosoft/colima
Usa lima-vm para gerenciar uma virtualização (usando QEMU).
- Como instalar?
brew install colima docker
- Como iniciar?
colima start
- Features
- processadores Intel e M1
- interface CLI simples
- suporta Docker and Containerd
- suporta Port Forwarding
- Volumes
- Kubernetes
- docker-compose funciona sem problemas
Lima
https://github.com/lima-vm/lima
Serve para rodar máquinas virtuais Linux (usando QEMU), com suporte automático para file sharing e port forwarding (semelhante a WSL2), e containerd.
Tem vários templates de VMs, incluindo Docker. Ver mais na página de exemplos no Github.
- Como instalar?
brew install lima docker
- Como configurar? copiar e costumizar o arquivo docker.yaml
- Como iniciar?
lima start docker.yaml
- Features
- processadores Intel e M1
- interface CLI simples
- suporta Docker and Containerd
- suporta Port Forwarding
- Volumes (acessa caminhos no host, desde que devidamente autorizados no docker.yaml)
- Kubernetes
Nota: pessoalmente, tive alguns problemas de instabilidade com Lima, observando a VM em estado irrecuperável, o que me fazia ter que recriar toda a VM, incluindo baixar a imagem da VM e todas as imagens Docker perdidas.
Rancher Desktop
É um produto do Rancher (orquestrador de containers) orientado para rodar Docker e Kubernetes localmente. É muito semelhante ao Docker Desktop, mas encontrei várias limitações que me obrigaram a desistir do seu uso (mas pode não acontecer com todos).
- Como instalar? Baixar o instalador e seguir o processo normal
- Como iniciar? Iniciar como uma app do MacOS (igual ao Docker Desktop)
- Features
- processadores Intel e M1
- interface gráfica
- suporta Port Forwarding
- otimizado para rodar Kubernetes
Podman
https://podman.io/getting-started/
Apesar de eu não ter experiência direta com Podman, achei digno de menção por ter um um paradigma diferente, pois não segue o padrão cliente-servidor.
O Podman gerencia diretamente os containers, sem necessidade de ter um servidor rodando em background. No entando, ainda é necessário criar a VM Linux, suportado pelo QEMU.
- Como instalar?
brew install podman
- Como iniciar?
podman machine init && podman machine start
- Features
- processadores Intel e M1
- interface CLI simples
- roda containers diretamente, sem docker nem servidor docker
- o CLI do podman é muito semelhante ao docker, permitindo uma transição suave
- suporta docker-compose de forma não trivial (fora do âmbito deste artigo)
Infelizmente não tenho experiência direta com Podman, então não posso assegurar as compatibilidades do mesmo.
Conclusão
Provavelmente existem mais alternativas, mas estas foram as minhas experiências pessoais.
Atualmente estou usando o colima sem qualquer problema, então é a minha recomendação pessoal.
Alguns dos problemas que tive no passado podem já ter sido corrigidas em versões mais recentes dos softwares.