apple/container is Apple’s native container tool for macOS, written in Swift for Apple silicon. Where Docker Desktop runs all containers in one shared Linux VM, it gives each container its own lightweight VM.1

Architecture

The container CLI talks to container-apiserver, a launchd service, which uses XPC helpers for images (container-core-images) and networking (container-network-vmnet) and runs one container-runtime-linux per container. It builds on Virtualization.framework, vmnet.framework, XPC, launchd, Keychain for registry credentials, and Unified Logging. The apple/containerization Swift package underneath handles OCI images, registries, ext4 filesystems, lightweight VMs, and vminitd, an init process exposing gRPC over vsock.1

Compared with Docker Desktop

Docker Desktopapple/container
VM modelOne Linux VM for all containersOne lightweight VM per container
IsolationLinux namespacesHardware virtualization
MemoryLimit on the shared VMPer-VM, by workload
File sharingSelected host directories shared with the VMOnly what each container needs
EcosystemMature, Compose and KubernetesEarly stage

As compared in the source. It uses standard OCI images and runs linux/amd64 containers through Rosetta 2.1

Limits at the time of writing

  • Needs an Apple silicon Mac; macOS 26 is supported, and macOS 15 works with limitations (containers cannot talk to each other, no multiple networks, possible IP conflicts).
  • Memory freed inside a container is not returned to macOS, so containers may need occasional restarts.
  • Version 0.x: compatibility is guaranteed only within patch releases until 1.0.0.1

Footnotes

  1. Understanding Apple Container, original ↩ ↩2 ↩3 ↩4