macOS container runtime · on Apple Container

Your docker commands,
on Apple's own runtime.

ContainerStack supervises Apple Container and puts a Docker-compatible socket in front of it, registered as a Docker context. docker and docker compose run unmodified — with no third-party daemon and no always-on Linux VM of its own.

See how it compares

macOS 26+ · Apple Silicon · Apple Container installed separately

containerstack — zsh
$ docker context use containerstack
containerstack ✓ current context

$ docker compose up -d
[+] Running 3/3
✓ Network api_default    Created
✓ Container api-db-1     Started
✓ Container api-web-1    Started

$ curl -s localhost:8080/health
{"status":"ok"}

No flags, no shim, no rewritten Compose file. The same commands, resolved by a different context.

how it works

Three moving parts, all inside the app bundle.

The runtime supervisor and the Docker API bridge ship as helpers in Contents/Helpers, and a LaunchAgent keeps the runtime alive when the window is closed. Uninstalling the app removes all of it.

step 01

Install and launch

One cask. ContainerStack bundles its runtime supervisor and the Docker API bridge inside the app — there is no separate daemon to install or keep updated.

step 02

The context registers itself

A Docker-compatible socket appears at ~/.socktainer/container.sock and is registered as the containerstack Docker context. Your existing contexts are left alone.

step 03

Use docker as you already do

Networks, volumes, published ports, exec and down -v all work unmodified. Nothing about your Compose files or scripts has to change.

measured, not claimed

OrbStack is faster. Here is by how much.

OrbStack is excellent at this, and it wins on throughput because it shares one tuned Linux VM across every container. ContainerStack trades that for running on the runtime Apple ships and maintains. These are the numbers from an idle M1 with 16 GiB — the same suite, the same machine, the same session.

Measure OrbStack ContainerStack
Container round trip baseline 4.6× slower
Bind-mount writes baseline 3.6× slower
3000-file bind-mount create baseline 3.6× slower
Image pull baseline at parity
Published-port latency baseline at parity

If throughput on large bind mounts is what decides your day, OrbStack is the better tool and this table is the reason to pick it.

what ships today

A GUI and a CLI over the same runtime.

CLI

cstack

ps, inspect, logs, start/stop/restart/rm, run, images, pull, rmi, volumes, networks, df, prune, context and compose — shipped in the bundle.

APP

Containers grouped by project

The dashboard groups running containers by their Compose project, with images, volumes and networks alongside a live runtime panel.

CTX

Docker context, handled

The containerstack context is created for you. On a machine that already runs OrbStack or Docker Desktop, yours is added rather than substituted.

SVC

Runs without the window

A LaunchAgent keeps the runtime supervised after you close the app, so containers outlive the GUI.

what it does not do

The parts that will annoy you.

A tool that hides its failure modes costs you more than one that names them. These are the three worth knowing before you install.

Known limitations in this build

  • When a bridge network's vmnet helper dies, published ports stop working until the runtime is restarted. Restarting the containers does not fix it and loses their addresses — the app and cstack doctor both say so rather than offering a remedy that was measured not to work. The re-attach belongs to Apple's daemon.
  • Slower than OrbStack on container round trip and bind-mount writes, by the factors in the table above. The cause is architectural: Apple Container boots one micro-VM per container rather than sharing one Linux VM.
  • No Linux machines, no Kubernetes, and no container domains, HTTPS or LAN exposure yet. macOS on Apple Silicon only; no remote container hosts.

install

One cask, or one download.

Both give you the same Developer ID signed, notarized build. The cask keeps it current through Homebrew; the app updates itself either way.

Or download the DMG

first run
$ docker context ls
NAME              DOCKER ENDPOINT
default           unix:///var/run/docker.sock
containerstack *  unix:///Users/you/.socktainer/container.sock
Platform
macOS 26 or later, Apple Silicon
Runtime
Apple Container 1.2.2, installed separately
Price
Free
Updates
Signed and notarized, delivered in-app