container

0.5.0

A tool for creating and running Linux containers using lightweight virtual machines on a Mac. It is written in Swift, and optimized for Apple silicon.
apple/container

What's New

0.5.0

2025-10-02T18:03:20Z

Highlights

⌨️ denotes breaking CLI changes.

👩‍💻 denotes breaking API changes.

Full Changelog: 0.4.1...0.5.0

What's Changed

  • Create command-reference.md by @wlan0 in #445
  • Uninstaller: call usage if incorrect number of options are provided by @katiewasnothere in #556
  • Fix relative path bind mounts regression by @realrajaryan in #572
  • Support following symlinks in tar when setting default kernel by @katiewasnothere in #575
  • Add force option to kernel set and add tests for kernel setting by @katiewasnothere in #579
  • Allow kernel set with tar to use relative paths to tar file by @katiewasnothere in #582
  • Remove description field in PR template by @katiewasnothere in #583
  • DefaultCommand signal behavior improvements for plugins by @mazdak in #570
  • Package.swift: Bump CZ to 0.7.0 by @dcantah in #584
  • Make "Plugin not found" message more descriptive by @mazdak in #569
  • Adds multiple image save to tarfile. by @jglogan in #560
  • Add a build parameter to handle warnings as errors by @dkovba in #591
  • Remove images alias for image subcommand. by @jglogan in #597
  • Docs: Update upgrade process in README.md. by @jglogan in #595
  • Pass DNS integration tests when default domain is set. by @jglogan in #594
  • Revert inadvertent pull platform filtering from #545. by @jglogan in #593
  • Remove per-target concurrency checking by @dkovba in #601
  • Use containerization 0.7.1. by @jglogan in #606
  • Update builder shim version to 0.6.1 to support default global args by @katiewasnothere in #605
  • Bump containerization dependency to 0.7.2. by @jglogan in #610
  • Add --labels for networks. by @jglogan in #600
  • Relocates API server to Helpers, service to Services. by @jglogan in #616
  • Enumerate using relative paths to avoid mismatch with symlink resolution of special paths like /tmp by @katiewasnothere in #613
  • Replace scattered defaults subcommands with system property. by @jglogan in #604
  • Use a lock consistently in the ExecutionContext class by @dkovba in #619
  • Fix failing network tests by @dkovba in #620
  • Expose Command Structs for Plugins by @Mcrich23 in #603
  • Rename CLI and ExecutableCLI folders by @Mcrich23 in #635
  • Bump CZ to 0.8.0 by @dcantah in #648
  • SandboxService: Turn off RunAtLoad for the default plugin by @dcantah in #649
  • CLI: Skip stopping containers in system stop if APIServer is down by @dcantah in #650
  • Use com.apple.container.registry as keychain ID. by @jglogan in #652
  • Swap to APIServer for all communications by @dcantah in #628
  • Remove Native Builder from the main branch by @dkovba in #634
  • Clarify memory units in help and documentation. by @jglogan in #657
  • Cleans up system subcommand options. by @jglogan in #662
  • Cleans up network and volume subcommands. by @jglogan in #661
  • Cleans up build subcommand options. by @jglogan in #658
  • Cleans up registry subcommand options. by @jglogan in #660
  • ClientContainer: Remove response timeout from stop by @dcantah in #667
  • Cleans up option groups, container subcommand help. by @jglogan in #647
  • Add and use container-apiserver start. by @jglogan in #655
  • Add and use container-runtime-linux start. by @jglogan in #654
  • Cleans up image subcommand options. by @jglogan in #659
  • Bumps containerization to 0.8.1. by @jglogan in #674
  • Fix regression - removed shutdown XPC inadvertently. by @jglogan in #675
  • Add warning note on finding docs for release versions by @katiewasnothere in #676
  • Adds a plain stderr log handler. by @jglogan in #680
  • Relocate ProcessIO to ContainerClient. by @jglogan in #681
  • Fix races in the SandboxService actor due to reentrancy after await calls by @dkovba in #684
  • Update an issue template by @dkovba in #694
  • Updates containerization to 0.9.1. by @jglogan in #697
  • Remove references to macOS 26 beta. by @jglogan in #702
  • Update license headers in C files by @dkovba in #693

New Contributors

Full Changelog: 0.4.1...0.5.0

container

container is a tool that you can use to create and run Linux containers as lightweight virtual machines on your Mac. It's written in Swift, and optimized for Apple silicon.

The tool consumes and produces OCI-compatible container images, so you can pull and run images from any standard container registry. You can push images that you build to those registries as well, and run the images in any other OCI-compatible application.

container uses the Containerization Swift package for low level container, image, and process management.

introductory movie showing some basic commands

Get started

Requirements

You need a Mac with Apple silicon to run container. To build it, see the BUILDING document.

container is supported on macOS 26, since it takes advantage of new features and enhancements to virtualization and networking in this release. We do not support older versions of macOS and the container maintainers typically will not address issues that cannot be reproduced on the macOS 26.

Install or upgrade

If you're upgrading, first stop and uninstall your existing container (the -k flag keeps your user data, while -d removes it):

container system stop
uninstall-container.sh -k

Download the latest signed installer package for container from the GitHub release page.

To install the tool, double-click the package file and follow the instructions. Enter your administrator password when prompted, to give the installer permission to place the installed files under /usr/local.

Start the system service with:

container system start

Uninstall

Use the uninstall-container.sh script to remove container from your system. To remove your user data along with the tool, run:

uninstall-container.sh -d

To retain your user data so that it is available should you reinstall later, run:

uninstall-container.sh -k

Next steps

Important

The links above are for the CURRENT BRANCH's documentation. To find documentation for official releases, find the target release on the Release Page and click the tag corresponding to your release version.

Example: release 0.4.1 tag

Contributing

Contributions to container are welcomed and encouraged. Please see our main contributing guide for more information.

Project Status

The container project is currently under active development. Its stability, both for consuming the project as a Swift package and the container tool, is only guaranteed within patch versions, such as between 0.1.1 and 0.1.2. Minor version number releases may include breaking changes until we achieve a 1.0.0 release.

Description

  • Swift Tools 6.2.0
View More Packages from this Author

Dependencies

Last updated: Fri Nov 07 2025 17:35:21 GMT-1000 (Hawaii-Aleutian Standard Time)