About this project

container is a command-line tool from Apple for creating and running Linux containers as lightweight virtual machines on a Mac. It is written in Swift and optimized for Apple silicon. The tool consumes and produces OCI-compatible container images, so images can be pulled from and pushed to any standard container registry and run in other OCI-compatible applications. Under the hood it relies on the Containerization Swift package for low-level container, image and process management. Requirements and platform support: an Apple silicon Mac is required, and the tool is supported on macOS 26, taking advantage of that release's virtualization and networking features. Older macOS versions are not supported. Installation is done through a signed installer package from the GitHub releases page, which places files under /usr/local. The system service is started with `container system start`. A first container can be run with `container run --rm alpine echo hello`, which pulls the alpine image, runs it in a lightweight Linux VM, prints output, and removes the container on exit. Upgrade and downgrade are handled by reinstalling the signed package or by using the installed update-container.sh script; the existing service must be stopped first. Downgrading requires uninstalling the current version, optionally keeping user data with the -k flag or removing it with -d. Uninstallation uses uninstall-container.sh with the same data-retention options. Documentation covers a guided tutorial that builds, runs and publishes a simple web server image, how-to guides, a technical overview, a full command reference, build instructions, and generated API documentation. Contributions are welcomed through the project's contributing guide. The project is under active development, and its release versions are product versions rather than semantic versions. CLI compatibility is generally preserved within a major release, though occasional breaking changes may be necessary; features marked experimental, such as the k8s subcommand, may change without backward-compatibility guarantees. The container-apiserver XPC API preserves forward and backward compatibility within a major version, while other non-public XPC helpers do not guarantee compatibility across versions. Application data provides forward compatibility only, guaranteed within one major version, and upgrading to a newer major version may require a specific upgrade path.