DEV Community

Cover image for Executando (e orquestrando) containers no MacOS com Lima e Colima
Edson C. (aka tuxpilgrim)
Edson C. (aka tuxpilgrim)

Posted on • Edited on

5

Executando (e orquestrando) containers no MacOS com Lima e Colima

Usar docker no macOS pode ser um problema, dado que o Docker Desktop é um pouco agressivo com o consumo de recursos da máquina, daí que surgem algumas alternativas, usar o Lima é uma delas, e é disso que vou falar um pouco.

O projeto Lima

O projeto lima-vm (Linux Virtual Machines) usa máquinas virtuais Linux para fazer compartilhamento automático de arquivo e encaminhamento de portas (parecido com o WSL2) com containerd.

Algumas características que valem a pena destacar:

  • Além do suporte nativo ao containerd suporta outras engine de containers, como docker, podman, apptainer
  • Suporte a orquestradores de container como kubernetes (com k3s e via kubeadm), faasd e nomad
  • Suporte a uma boa quantidade de distribuições linux, como Alpine, Debian, Fedora, openSUSE, Arch Linux e por aí vai

Mais detalhes vocês podem conferir no repositório do Github (que super recomendo a dar uma olhada, tem bastante coisa).

Hora de usar

A instalação no macOS pode ser feita com homebrew:

$ brew install lima
Enter fullscreen mode Exit fullscreen mode

Depois disso é só usar a CLI (limactl) para iniciar uma instância:

$ limactl start
Enter fullscreen mode Exit fullscreen mode

As configurações da instância padrão (default) são:

  • Sistema operacional: Ubuntu 22.10 (Kinetic Kudu)
  • CPU: 4 cores
  • Memória: 4 GiB
  • Disco: 100 GiB
  • Montagens: ~ (somente leitura), /tmp/lima (escrita)
  • SSH: 127.0.0.1:60022

Você pode iniciar uma instância a partir de um template, para ver os templates disponíveis:

$ limactl start --list-templates
Enter fullscreen mode Exit fullscreen mode

A saída vai ser algo assim:

$ almalinux-8
almalinux-9
almalinux
alpine
apptainer-rootful
apptainer
archlinux
buildkit
centos-stream-8
....
Enter fullscreen mode Exit fullscreen mode

Iniciando a instância a partir de um template:

$ limactl start --name=alpine-instance template://alpine
Enter fullscreen mode Exit fullscreen mode

Você pode listar as instâncias criadas/iniciadas com:

$ limactl list
Enter fullscreen mode Exit fullscreen mode

Para acessar a instância, você pode usar o comando limactl shell, de duas formas:

  • abrindo um shell: limactl shell <nome-da-instancia>
  • executando um comando: limactl shell <nome-da-instancia> <comando>

Se quiser para a instância, só usar:

$ limactl stop <nome-da-instancia>
Enter fullscreen mode Exit fullscreen mode

E caso queira deletar:

$ limactl delete <nome-da-instancia>
Enter fullscreen mode Exit fullscreen mode

Existem alguns outros comandos, podem consultar a lista aqui.

O projeto Colima

A ideia do projeto colima é criar um ambiente de de container no macOS com uma configuração mínima usando o Lima.

Hora de usar

A instalação também pode ser feita via homebrew:

$ brew install colima
Enter fullscreen mode Exit fullscreen mode

Para iniciar com as configurações padrões:

$ colima start
Enter fullscreen mode Exit fullscreen mode

Por padrão, o container runtime é Docker, então se quiser usar outro:

$ colima start --runtime containerd
Enter fullscreen mode Exit fullscreen mode

As configurações padrões da VM criada pelo colima são:

  • 2 CPUs
  • 2Gib de memória
  • goGiB de disco

Isso é totalmente customizável com as flags --cpu, --memory, --disk ou alterando no arquivo de configuração, com --edit.

Agora a parte MAIS LEGAL, se quiser usar kubernetes, é só executar:

$ colima start --runtime containerd --kubernetes
Enter fullscreen mode Exit fullscreen mode

E pronto, seu cluster já está criado:

$ k get nodes
$ NAME     STATUS   ROLES                  AGE     VERSION
colima   Ready    control-plane,master   7d12h   v1.25.4+k3s1
Enter fullscreen mode Exit fullscreen mode

Mais detalhes dos comandos vocês podem ver no repositório do projeto no Github.

Por agora é isso, espero que seja útil pra mais alguém (assim como foi pra mim).

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (2)

Collapse
 
bergpb profile image
Lindemberg Barbosa

Bacana, conhecia o projeto colima mas ainda não tinha tirado um tempo pra ter um overview melhor da ferramenta.
Vai rolar um post sobre o finch em breve?

Collapse
 
tuxpilgrim profile image
Edson C. (aka tuxpilgrim)

Tá na lista aqui pra dar uma olhada, quem sabe hah
já chegou a usar o finch? :D

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs