- Ferramenta para criar e executar contêineres Linux no Mac na forma de máquinas virtuais leves
- O novo Container Machine, adicionado na WWDC26, permite executar um ambiente Linux rápido, leve e persistente com o diretório home e os repositórios montados automaticamente
- Diferente dos contêineres tradicionais no nível de aplicação, ele modela o ambiente Linux inteiro (semelhante ao WSL2)
- Permite executar o sistema init da imagem para registrar serviços de longa duração ou testar aplicações sob um gerenciador de processos
- Em imagens com
systemd instalado, é possível executar serviços Linux reais como systemctl start postgresql
- Mapeia automaticamente o nome de usuário e o diretório home, compartilhando repositórios e dotfiles entre macOS e Linux
- Os repositórios ficam no
$HOME do macOS e são montados internamente em /Users/<username>, permitindo editar com editor ou IDE do macOS enquanto compila e executa por dentro
- Ferramentas nativas do macOS como profiler, navegador e depurador GUI reconhecem os mesmos arquivos, eliminando a etapa de cópia entre build e inspeção
- É possível criar Container Machines para quantas distribuições alvo forem necessárias, como
alpine, ubuntu e debian, todas compartilhando o mesmo $HOME e dotfiles para testes rápidos em múltiplas distros
- Qualquer imagem Linux que inclua
/sbin/init pode ser usada diretamente como imagem de Container Machine
- Como consome e gera imagens de contêiner compatíveis com OCI, também é possível fazer pull e push de imagens Docker em registries padrão de contêineres
- Essas imagens também podem ser executadas em outros aplicativos compatíveis com OCI
- O gerenciamento de baixo nível de contêineres, imagens e processos depende do pacote Swift Containerization
- Requer um Mac com Apple silicon para execução e tem suporte no macOS 26
- Aproveita novos recursos e melhorias de virtualização e rede do macOS 26; versões anteriores do macOS não são suportadas
- Licença Apache-2.0
Comandos de uso
container machine create alpine:latest --name dev
container machine run -n dev whoami # your host username, not root
container machine run -n dev pwd # /home/<you> — your Mac home dir, mounted in
container machine run -n dev # interactive shell; cd into your repos in $HOME
container machine ls # list all container machines
container machine inspect dev # JSON detail for one
container machine stop dev # stop the container machine
container machine rm dev # delete, including its persistent storage
container machine set -n dev cpus=4 memory=8G
container machine stop dev
container machine run -n dev -- nproc
- Containerization é um framework Swift aberto como open source na WWDC 25 e serve como base para executar contêineres Linux no macOS
- Foi projetado para fornecer isolamento baseado em máquina virtual para cada contêiner, usando VMs leves para oferecer desempenho rápido e inicialização em menos de 1 segundo
- Container Machine é um novo recurso construído sobre o Containerization que combina a usabilidade e a velocidade dos contêineres com a persistência das máquinas virtuais, e com recursos de integração faz o ambiente Linux parecer uma extensão do macOS
-
Princípios de design
- O Container machine precisa ser rápido e leve para poder se integrar aos fluxos de trabalho existentes
- Deve ser fácil alternar entre macOS e Linux
- O usuário deve conseguir criar e personalizar rapidamente novos ambientes, permitindo que vários projetos tenham ambientes dedicados sem preocupação com conflitos de dependências ou toolchains
- Como as ferramentas e dependências necessárias podem mudar ao longo do ciclo de vida de desenvolvimento, deve ser possível adicionar ferramentas em um ambiente persistente e reutilizá-las com o tempo
- Ao desenvolver para várias plataformas, não deve ser necessário fazer uma grande troca de contexto nem aprender novas ferramentas
3 comentários
Será que vai entregar desempenho suficiente?
Por mais que eu olhe, parece a versão para Mac do WSL2, mas será que não vai ter aquela queda brusca de desempenho de I/O na hora de mapear volumes do host?
Mesmo agora já uso o
limactlpara rodar contêineres em cima de uma VM, então também fico com a sensação de que não é tão diferente assim.Comentários no Hacker News
Só para esclarecer algumas coisas aqui: isso não significa apenas contêineres OCI
Container Machines oferece suporte a persistência e montagem de sistemas de arquivos, então vira um excelente ambiente Linux leve para desenvolvedores que usam macOS
Mais detalhes aqui: https://developer.apple.com/videos/play/wwdc2026/389
OrbStack funciona muito bem para mim
Fico curioso para saber como isso se compara em termos de desempenho
Em vez de usar o Virtualization.framework, usamos diretamente uma stack de virtualização baseada em Rust com dispositivos e protocolos personalizados para recursos como compartilhamento de sistema de arquivos
É uma stack verticalmente integrada e altamente otimizada, especializada em executar máquinas Linux e contêineres
O maior ganho de desempenho/recursos é a memória dinâmica, que devolve ao macOS a memória não usada, reduzindo bastante o consumo
Outras opções, incluindo Containerization, não oferecem suporte a isso
Testando o Container Machines, ele me parece muito mais próximo de um contêiner OCI com montagens bind padrão do que das máquinas do OrbStack
Tem menos recursos de integração e não executa
systemdnem um sistema de init tradicional, então é difícil rodar serviçosNeste momento eu preferiria usar Podman ou Colima
Pelo que vejo, é bem parecido
Opcionalmente também dá para rodar o
dockerd, e o https://github.com/cpuguy83/crucible executabuildkitdoudockerdcom o framework Containerization e depois se conecta ao CLI do docker/buildx ou à ferramenta cliente que você quiserO framework Containerization é uma biblioteca construída sobre o Virtualization Framework, então cada contêiner é sua própria VM
Machine é uma ferramenta sobre o framework Containerization que executa várias tarefas dentro de contêineres na VM
Esses contêineres compartilham um kernel comum? Ou cada um roda em uma VM separada?
Edit: é uma VM por contêiner https://github.com/apple/container/blob/main/docs/technical-...
Os contêineres da Apple parecem ótimos para fornecer sandbox para agentes de codificação com IA
Transformei isso em MCP para que qualquer agente de codificação consiga descobrir facilmente
https://github.com/instavm/coderunner
Fiquei me perguntando se seria possível trocar o volume do contêiner por, por exemplo, um disco externo
Hoje faço isso com imagens QMEU e qcow2, e funciona razoavelmente bem
Fico me perguntando por que o macOS não tenta uma abordagem no estilo WSL1
Entendo por que isso não foi um sucesso completo no Windows, mas o macOS é outro sistema *nix, então muitas das partes difíceis no Windows parecem ser fáceis no Mac
Com algumas APIs novas, parece que seria possível executar a maioria dos aplicativos Linux de forma nativa no macOS
O BSD na verdade já tem algo assim
A ABI é bem mais simples e estável do que a do kernel Linux
Isso poderia substituir algo como o Docker Desktop e eliminar a cara VM Linux rodando ao lado?
O overhead do Docker Desktop é bem pesado, então seria ótimo se isso entrasse de forma nativa no DD
Considerando que historicamente a Docker tentou melhorar o desempenho e acabou tendo de aceitar rapidamente as limitações da plataforma, parece plausível, e mover o DD para o lado dos contêineres parece natural
Fiz um experimento migrando minha carga de trabalho do Podman para o Apple container: https://gist.github.com/jmonster/39e14585e107dbf990a90966c0f...
Resumindo, houve redução no uso de RAM/armazenamento e impacto mínimo no sistema
É bem doloroso trabalhar tentando contornar o Docker Desktop
Parece que eu acabo fazendo
rm -rf ~/.colimaa cada poucos diasSurpreende que a Apple tenha se importado o suficiente para fazer isso
Ainda assim eu continuo preferindo Linux, mas o valor do MacBook é enorme
Talvez eu use essa ferramenta
Toda vez que vejo a Apple exibindo contêineres Linux, é difícil interpretar isso como algo além de admissão de derrota
Se ainda tivesse capacidade, Darwin já teria dado conta
Por que um desenvolvedor sério usaria código fechado que ele não pode depurar nem corrigir, especialmente em um servidor de produção?
Essa é também a razão pela qual desenvolvedores e hackers sérios não usam macOS
Uma das essências de ser desenvolvedor é poder descer qualquer camada do código para depurar e corrigir
A Apple abandonou o mercado de servidores há 10 anos, e mesmo antes disso o suporte real já era quase inexistente
Mesmo que suportasse contêineres Darwin, qual seria o sentido? Literalmente ninguém iria criar builds mirando isso, e o Linux venceu
Isso é um recurso novo?
Achei que já existisse
Quando testei, o desempenho do sistema de arquivos não era aceitável em um ambiente de desenvolvimento Node/Rust com muitos
statem arquivos pequenosAtualização: a novidade é o subcomando
container machineTentei testar, mas no meu ambiente o container nem chegou a iniciar: https://github.com/apple/container/issues/1681
Ainda há mais trabalho a fazer, mas recebemos bem cargas de trabalho para teste
Dedicamos muito esforço para otimizar arquivos pequenos e cargas de trabalho comuns de desenvolvedor no protocolo personalizado de compartilhamento de sistema de arquivos do OrbStack
Não é o
virtiofspadrãoEle usa o framework de container já existente para executar máquinas
Dá para usar tanto em modo rootful quanto rootless