Apple's container machines are the right architecture, half-built
Apple's WWDC 2026 release wraps OCI containers in persistent Linux VMs, a defensible isolation bet that ships before the polish does.
Apple's WWDC 2026 release wraps OCI containers in persistent Linux VMs, a defensible isolation bet that ships before the polish does.
For years, the standard answer to "my laptop is a Mac and my code runs on Linux" was some combination of Docker Desktop, OrbStack, or a hand-rolled VM. At WWDC 2026, Apple made its own bid for that workflow with a feature it calls container machines, and the architectural bet underneath it is the actual story (Apple gives Mac devs a WSL-ish thing to call their own).
A container machine is not an ephemeral container. It is a persistent Linux virtual machine that hosts an OCI container, and that distinction is the point. Where Docker Desktop and OrbStack lean on shared-kernel tricks to keep containers light, Apple's stack runs both containers and container machines on lightweight VMs, which means each workload gets its own kernel and a real isolation boundary (Apple gives Mac devs a WSL-ish thing to call their own). For developers shipping code that has to behave the same way it will in production Linux, that is the kind of difference that actually changes how confident you can be about a local test.
The stack underneath is recognizably Apple. The hypervisor is the native Virtualization framework. The container format is standard OCI, so the existing image ecosystem, from Docker Hub to a private registry to whatever your CI produces, drops in without translation. The implementation is written in Swift, lives on GitHub, and is released under Apache 2.0. The container machine feature is the new top of a "Container" project Apple first previewed at WWDC 2025, and the 1.0 release landed at WWDC 2026 (Apple gives Mac devs a WSL-ish thing to call their own).
Tim Anderson's hands-on for The Register, run on macOS Tahoe 26.5.1 with the 1.0 release pulled from GitHub, gives the feature its first real texture. The interaction model is a CLI: container machine run for a one-off session, container machine create to make a persistent one, and a default machine that stands in for the daily-driver case. That is enough to make the feature usable today, and it is also where the rough edges start to show.
The first rough edge is the gate. Container machines require macOS 26, which is fine for a v1.0 but cuts the feature off from every Mac that is not on this year's release train. The second is a real friction point: a container image has to include /sbin/init to behave as a persistent machine, which is a meaningful constraint on the kind of base image you reach for. The third is the one the source itself names, and it is the one developers will feel fastest: documentation, feature breadth, and memory handling all need polish at v1.0 (Apple gives Mac devs a WSL-ish thing to call their own).
The WSL comparison is the obvious one, and it is useful up to a point. Microsoft's WSL has years of distribution work, a deep Windows integration story, and a polish layer Apple has not built yet. Apple's container machines go further on isolation by refusing to share the host kernel, and they stay portable by sticking to OCI, but the analogy should not be sold as a verdict. Different isolation model, different distribution, different integration depth (Apple gives Mac devs a WSL-ish thing to call their own).
That last difference is the question worth watching. Apple has shipped the 1.0 of a defensible architecture as a GitHub release rather than as a first-class macOS feature, and the friction in that choice is not cosmetic. The upgrade path is legible: ship a polished, in-the-box container machine story in a future macOS release, smooth the memory handling, and treat the /sbin/init requirement as a supported contract instead of a caveat. If Apple does that, container machines stop being a clever thing developers assemble and start being the way Macs run Linux. If it does not, this is the architecture Mac developers almost got, and the next answer to the laptop-versus-target mismatch still comes from somewhere else.