How Docker works on a Mac
Containers are Linux processes, and macOS is not Linux. Every way of running Docker containers on a Mac therefore runs a small Linux system next to macOS and connects the docker command to it. The docker command is only a client: it sends requests to whichever engine the current Docker context points at. That is why you can choose the app that provides the engine and keep every script, Makefile and Compose file you have.
On macOS 27 the choice matters more than it used to. The app you pick decides how fast containers start and stop, how much memory sits idle, whether your VPN and firewall rules apply to container traffic, and whether your coding agent can see what is running. The comparison of Mac container apps covers every option by name; this guide shows the fastest path we know.
Install Docker-compatible containers on macOS 27
- Check your Mac. Choose Apple menu › About This Mac: you need Apple silicon and macOS 26 or later. In Terminal,
uname -mprintsarm64on Apple silicon. - Download and install. Download Oxcart (a notarized disk image, about 215 MiB), open it and drag Oxcart to Applications.
- Open Oxcart. It opens with the standard dialog for an app Apple has checked for malicious software. Setup unpacks and starts the engine offline: nothing in setup reaches the network.
- Approve one administrator prompt. macOS asks once to install Oxcart’s helper, which links
docker,docker compose,docker buildxandoxcartinto/usr/local. If another app’s tools are already there, Oxcart lists both versions and asks before replacing them. - Choose folder access. Allow or Skip access to protected folders such as Desktop, Documents and Downloads. Skip means containers can’t use files there; you can change it later.
- Run your first container. In Terminal, run
docker run --rm alpine echo hello. Oxcart created a Docker context namedoxcart;docker context lsshows it.
First commands to try
docker version # client 29.9, server: Oxcart's engine
docker run --rm alpine uname -m # aarch64: native Apple silicon
docker run --rm --platform linux/amd64 alpine uname -m # x86_64, through Rosetta
docker compose up -d --wait # in a project with a compose.yaml
docker buildx build -t myapp . # builds with BuildKit If you already have a Compose project, docker compose up --wait brings it up and waits until every service with a healthcheck is healthy. The Compose on Apple silicon guide covers amd64 images, healthchecks and ports in detail.
A faster development loop on macOS 27
| Area | What it means for you |
|---|---|
| Speed | docker run --rm in 42 ms, docker stop in 19 ms, 20 containers stopped and removed in 77 ms; the engine is ready 0.8 s after start |
| Compatibility | docker CLI, Compose (healthchecks, up --wait), Buildx, the Engine API (Testcontainers, docker-py), Dev Containers CLI, the Docker socket inside containers |
| Mac app | SwiftUI on AppKit with Liquid Glass; a menu bar item; Compose projects grouped with their health; ports grouped by repository and branch |
| Coding agents | A local MCP server for Claude Code, Codex, Cursor and others, read-only by default |
| Security | Developer ID signed and notarized; signed updates; TLS 1.3 on the container network link; docker login passwords in the Keychain |
| Networking | Outbound connections opened by your Mac, so VPN routes, split DNS and firewalls such as Little Snitch apply |
Speed: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPUs and 12 GiB, medians of five samples. The other runtimes in our comparison were measured earlier the same day on the same Mac and harness with the docker 29.4 client.
Keep control of your Mac
- It never reaches the network: the Linux system is inside the app.
- It never edits your shell profile.
- It never takes over your Docker context if another engine is answering: the
oxcartcontext becomes current only if the current one isdefaultwith nothing answering. - It never replaces another app’s
dockertools without asking, and Uninstall puts them back.
Keep the workflow your projects need
Run your Compose stacks, build images for your deployment target and connect your coding agent to the same containers. Privileged containers are supported through docker run --privileged and privileged: true in Compose, so workloads that need elevated permissions inside Linux fit into the same workflow. For Kubernetes development, see Kubernetes on a Mac.
Questions
Does Docker work on macOS 27?
Yes. Docker containers run on macOS 27 through an app that provides a Linux engine. Oxcart is built for macOS 26 and later on Apple silicon: it includes the docker CLI 29.9, Docker Compose 5.6 and Buildx 0.38, and its engine speaks Docker API 1.40 to 1.54.
Is the docker command tied to one app on macOS 27?
No. The docker command is a client that talks to any Docker-compatible engine through a Docker context. Oxcart installs the docker CLI, Compose and Buildx and points them at its own engine through the oxcart context. The comparison of Mac container apps lists the alternatives by name.
Can I run amd64 (x86-64) images on an Apple silicon Mac?
Yes. Oxcart runs amd64 images through Rosetta: docker run --platform linux/amd64 …, or platform: linux/amd64 in a Compose file. Buildx can also build and load amd64 images.
Does Oxcart work on an Intel Mac or macOS 15?
No. Oxcart needs a Mac with Apple silicon and macOS 26 or later.
Does setup download anything?
No. The Linux system Oxcart runs is inside the app, and nothing in setup reaches the network. Your first docker pull or docker run of a new image downloads that image from its registry, as with any Docker setup.
How much does it cost?
Oxcart is free for 60 days. Then it is $20 per user, per major version, not a subscription; minor and patch updates are free.
The docker command says it cannot connect to the Docker daemon. What now?
Run docker context ls and check that oxcart is current; if not, run docker context use oxcart. If Oxcart shows a banner about Container Services, click Troubleshoot… in that banner.
Sources and method
- Setup steps: Oxcart 0.1.3 as shipped (offline setup, one administrator prompt, one folder-access choice, the
oxcartcontext rule). - Speed: Oxcart 0.1.2 with its bundled docker 29.9 client, 2026-10-10, Apple M5 Max, 36 GiB, macOS 27.2.
- Compatibility: tested on Oxcart, 2026-10-10.