6 pontos por xguru 6 시간 전 | 3 comentários | Compartilhar no WhatsApp
  • 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  

Vídeo de apresentação da WWDC26 - Conheça o Container Machine

  • 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

 
recast7838 23 분 전

Será que vai entregar desempenho suficiente?

 
click 4 시간 전

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 limactl para 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.

 
GN⁺ 4 시간 전
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

    • Ah, então é um subsistema Darwin/BSD para Linux
  • OrbStack funciona muito bem para mim
    Fico curioso para saber como isso se compara em termos de desempenho

    • Sou o desenvolvedor do OrbStack
      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 systemd nem um sistema de init tradicional, então é difícil rodar serviços
    • Gosto do OrbStack em conceito, mas acho difícil justificar uma licença de US$ 96 por ano quando existem alternativas gratuitas e de código aberto
      Neste momento eu preferiria usar Podman ou Colima
    • Também queria ver uma comparação com https://tart.run/
      Pelo que vejo, é bem parecido
    • Não é um ambiente Docker completo; ele foi feito com foco em builds
      Opcionalmente também dá para rodar o dockerd, e o https://github.com/cpuguy83/crucible executa buildkitd ou dockerd com o framework Containerization e depois se conecta ao CLI do docker/buildx ou à ferramenta cliente que você quiser
      O 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
    • Eu realmente gosto do OrbStack, e ainda não entendo muito bem por que eu usaria Container Machines no lugar dele hoje
  • 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

    • Que vantagem isso teria em relação à infraestrutura de VM que a Apple já precisa de qualquer forma?
      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?

    • Foi exatamente isso que pensei primeiro
      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
    • A ideia é eliminar em grande parte a grande VM compartilhada em segundo plano e trocá-la por VMs nativas da Apple menores e mais isoladas
      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
    • Outros já mencionaram isso aqui também, mas eu mudei recentemente para o Colima
      É bem doloroso trabalhar tentando contornar o Docker Desktop
    • Seria realmente ótimo
      Parece que eu acabo fazendo rm -rf ~/.colima a cada poucos dias
  • Surpreende que a Apple tenha se importado o suficiente para fazer isso
    Ainda assim eu continuo preferindo Linux, mas o valor do MacBook é enorme

    • Eu também sempre preferiria usar Linux, mas às vezes a empresa me dá um MacBook
      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

    • A Apple se condenou à derrota no mercado de servidores e de desenvolvedores no momento em que decidiu tornar o macOS código proprietário
      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
    • Basta reescrever 30 anos de história da internet
    • Qual seria a alternativa?
      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 stat em arquivos pequenos
    Atualização: a novidade é o subcomando container machine
    Tentei testar, mas no meu ambiente o container nem chegou a iniciar: https://github.com/apple/container/issues/1681

    • Queria saber se você já testou o OrbStack
      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 virtiofs padrão
    • Para referência, o Podman também funciona no macOS
      Ele usa o framework de container já existente para executar máquinas
      Dá para usar tanto em modo rootful quanto rootless