- Herramienta para crear y ejecutar contenedores Linux en Mac como máquinas virtuales ligeras
- La nueva Container Machine, añadida en WWDC26, permite ejecutar un entorno Linux rápido, ligero y persistente con el directorio home y los repositorios montados automáticamente
- A diferencia de los contenedores tradicionales orientados a aplicaciones, modela el entorno Linux completo (similar a WSL2)
- Puede ejecutar el sistema
init de la imagen para registrar servicios de larga duración o probar aplicaciones bajo un administrador de procesos
- En imágenes con
systemd instalado, se pueden ejecutar servicios Linux reales como systemctl start postgresql
- Mapea automáticamente el nombre de usuario y el directorio home, para compartir repositorios y dotfiles entre macOS y Linux
- Los repositorios se ubican en el
$HOME de macOS y se montan internamente en /Users/<username>, lo que permite editar con editores o IDE de macOS mientras se compila y ejecuta dentro del entorno
- Herramientas nativas de macOS como profilers, navegadores y depuradores GUI reconocen los mismos archivos, por lo que no hace falta copiar entre la etapa de build y la de inspección
- Se puede crear una Container Machine por cada distribución objetivo, como
alpine, ubuntu o debian, todas compartiendo el mismo $HOME y dotfiles para probar rápidamente en varias distribuciones
- Cualquier imagen Linux que incluya
/sbin/init puede usarse directamente como imagen de Container Machine
- Como consume y genera imágenes de contenedor compatibles con OCI, también puede hacer pull y push de imágenes Docker desde registros de contenedores estándar
- Esas imágenes también pueden ejecutarse en otras aplicaciones compatibles con OCI
- La gestión de bajo nivel de contenedores, imágenes y procesos depende del paquete Swift Containerization
- Requiere una Mac con Apple silicon para ejecutarse y es compatible con macOS 26
- Aprovecha nuevas funciones y mejoras de virtualización y networking de macOS 26; no es compatible con versiones anteriores de macOS
- Licencia Apache-2.0
Comandos de ejemplo
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 es un framework Swift de código abierto presentado en WWDC 25 como base para ejecutar contenedores Linux en macOS
- Está diseñado para ofrecer aislamiento basado en máquinas virtuales para cada contenedor, usando máquinas virtuales ligeras para dar buen rendimiento y tiempos de arranque de menos de 1 segundo
- Container Machine es una nueva función construida sobre Containerization que combina la usabilidad y velocidad de los contenedores con la persistencia de las máquinas virtuales, y gracias a su integración hace que el entorno Linux se sienta como una extensión de macOS
-
Principios de diseño
- Container Machine debe ser rápida y ligera para integrarse a los flujos de trabajo existentes
- Debe permitir cambiar fácilmente entre macOS y Linux
- Los usuarios deben poder crear y personalizar rápidamente nuevos entornos, para que varios proyectos tengan entornos dedicados sin preocuparse por conflictos de dependencias o toolchains
- Como las herramientas y dependencias necesarias pueden cambiar durante el ciclo de vida de desarrollo, debe ser posible agregarlas en un entorno persistente y reutilizarlas con el tiempo
- Al desarrollar para múltiples plataformas, no debería requerir grandes cambios de contexto ni aprender herramientas nuevas
3 comentarios
¿Dará un rendimiento suficiente?
Por más que lo veo, parece la versión de WSL2 para Mac; me pregunto si al mapear volúmenes del host no se caerá bastante el rendimiento de I/O.
Incluso ahora uso
limactlpara correr contenedores sobre una VM, y siento que no es tan diferente.Comentarios en Hacker News
Para aclarar algunas cosas, esto no se refiere solo a contenedores OCI
Container Machines admite persistencia y montajes de sistema de archivos, así que se convierte en un excelente entorno Linux ligero para desarrolladores que usan macOS
Más detalles aquí: https://developer.apple.com/videos/play/wwdc2026/389
OrbStack me funciona muy bien
Me pregunto cómo se comparará esto en rendimiento
En lugar de Virtualization.framework, usamos directamente una pila de virtualización basada en Rust con dispositivos y protocolos personalizados para funciones como compartir el sistema de archivos
Es una pila integrada verticalmente y altamente optimizada, especializada en ejecutar máquinas Linux y contenedores
La mayor ganancia en rendimiento/recursos es la memoria dinámica, que devuelve a macOS la memoria no utilizada y reduce mucho el uso de memoria
Otras opciones, incluida Containerization, no admiten esto
Después de probar Container Machines, me parece mucho más cercano a contenedores OCI con montajes bind predeterminados que a las máquinas de OrbStack
Tiene menos funciones de integración y no ejecuta systemd ni un sistema init común, así que es difícil correr servicios
Por ahora preferiría usar Podman o Colima
A mí me parece bastante similar
Opcionalmente también se puede ejecutar dockerd, y https://github.com/cpuguy83/crucible ejecuta buildkitd o dockerd con el framework Containerization y luego se conecta mediante la CLI de docker/buildx o la herramienta cliente que prefieras
El framework Containerization es una librería montada sobre el framework de Virtualization, así que cada contenedor es su propia VM
Machine es una herramienta sobre el framework Containerization que ejecuta varias tareas en los contenedores dentro de la VM
¿Estos contenedores comparten un kernel común? ¿O cada uno corre en una VM separada?
Edición: es una VM por contenedor https://github.com/apple/container/blob/main/docs/technical-...
Los contenedores de Apple parecen buenos para dar sandboxing a agentes de codificación con IA
Lo hice como MCP para que cualquier agente de codificación pueda descubrirlo fácilmente
https://github.com/instavm/coderunner
Me preguntaba si sería posible mover los volúmenes de contenedor, por ejemplo, a un disco externo
Ahora mismo hago eso usando imágenes QMEU y qcow2, y funciona más o menos bien
Me pregunto por qué macOS no intenta un enfoque tipo WSL1
Entiendo por qué eso no terminó de funcionar por completo en Windows, pero macOS ya es otro *nix, así que muchas de las partes difíciles en Windows parecerían más fáciles en una Mac
Con apenas unas cuantas APIs nuevas, parecería posible ejecutar de forma nativa la mayoría de las aplicaciones Linux en macOS
De hecho BSD ya tiene algo así
El ABI es mucho más simple y estable comparado con el kernel de Linux
¿Esto podría reemplazar algo como Docker Desktop y eliminar la costosa VM Linux que corre al lado?
La sobrecarga de Docker Desktop es bastante pesada, así que sería bueno si esto llegara de forma nativa a DD
Viendo que Docker históricamente ha intentado mejorar el rendimiento pero terminó aceptando rápido las limitaciones de la plataforma, parece posible, y mover DD hacia el lado de los contenedores suena natural
Hice un experimento moviendo mi carga de trabajo de Podman a Apple container: https://gist.github.com/jmonster/39e14585e107dbf990a90966c0f...
En resumen, baja el uso de RAM/almacenamiento y casi no se siente
Es muy doloroso trabajar esquivando Docker Desktop
Siento que termino haciendo
rm -rf ~/.colimacada pocos díasMe sorprende que Apple se haya preocupado lo suficiente como para hacer esto
Aun así, yo sigo prefiriendo Linux, pero el valor de una MacBook es enorme
Puede que sí use esta herramienta
Cada vez que veo a Apple presumir contenedores Linux, me cuesta verlo como otra cosa que no sea una admisión de derrota
Si todavía tuvieran capacidad, Darwin habría bastado
¿Qué desarrollador serio va a usar código cerrado que no puede depurar ni corregir, especialmente en un servidor de producción?
Esa es también la razón por la que muchos desarrolladores serios o hackers no usan macOS
Una parte central de ser desarrollador es poder meterse en cualquier capa del código para depurarla y arreglarla
Apple abandonó el mercado de servidores hace 10 años, y aun antes de eso casi no había soporte real
Incluso si soportaran contenedores Darwin, ¿qué significaría eso? Literalmente nadie construiría para ese objetivo, Linux ganó
¿Esto es una función nueva?
Pensé que ya existía
Cuando lo probé, el rendimiento del sistema de archivos no era lo bastante bueno para un entorno de desarrollo Node/Rust que hace muchos
statsobre archivos pequeñosActualización: lo nuevo es el subcomando
container machineIntenté probarlo, pero en mi entorno el contenedor ni siquiera arrancó: https://github.com/apple/container/issues/1681
Todavía hay más trabajo por hacer, pero cualquier carga de trabajo de prueba es bienvenida
Hemos invertido mucho esfuerzo en optimizar archivos pequeños y cargas de trabajo comunes de desarrolladores en el protocolo personalizado de compartición de sistema de archivos de OrbStack
No es virtiofs estándar
Ejecuta máquinas usando el framework de contenedores ya existente
Puede funcionar tanto con privilegios de root como en modo rootless