dockmaLightweight Docker on macOS,
free and open source.

Status: early development · Apple Silicon only · tested on macOS 27

$ curl -fsSL http://dockma.dev/install.sh | sh

Installs the latest release to ~/.local/bin, checksum-verified. Read the script before you run it.

tl;dr

dockma boots a minimal Linux VM with Apple's Virtualization.framework and runs a stripped-down Linux distribution with Docker Engine inside it. The macOS docker CLI communicates to the engine through a Unix socket. A launchd job keeps it running in the background.

Docker on a Mac, without the hassle.

dockma is a Docker runtime for Apple Silicon Macs, an alternative to running the engine through Docker Desktop, Colima or OrbStack. You keep using the docker CLI on your host; dockma only provides the engine behind it.

It is currently in early development : Apple Silicon only, and tested on macOS 27 so far. See the known limitations before relying on it.

Feel free to install, daily-drive and report issues, but if you need a battle-tested, production-ready alternative, consider Colima.

Features

Boots in ~1.1s

Custom-built 6.18 LTS kernel with only the stuff Docker actually needs - nothing else.

Shared $HOME directory

Your home directory is shared via virtiofs at the identical path, so -v "$PWD:/src" just works.

Automatic port forwarding

-p 8080:80 is reachable at localhost:8080, IPv4 and IPv6, and -p 1053:53/udp works the same way. Gone when the container stops.

Run your amd64 containers via Rosetta.

--platform linux/amd64 runs x86-64 images through Rosetta for Linux.

dockma shell

If you want to inspect the VM, dockma has you covered.

Lightweight daemon.

Runs under launchd and restarts after a guest crash. dockma stop powers off cleanly; data persists.

Quick start

Install a release

# 1. Install the dockma CLI and its Linux guest from the latest release
curl -fsSL http://dockma.dev/install.sh | sh

# 2. Start the VM and point the docker CLI at it
dockma start
docker context use dockma
docker run --rm hello-world

Needs an Apple Silicon Mac with macOS 14 or later and the docker CLI (brew install docker). The script checks the download against the release's SHA256SUMS (and its build attestation, if gh is logged in), installs dockma to ~/.local/bin and fetches the matching Linux guest. Set DOCKMA_VERSION to pin a release or DOCKMA_INSTALL_DIR to install elsewhere. Optional: Rosetta for amd64 images. If DOCKER_HOST is set (Lima does this), it overrides the context.

From source

# 1. Build the guest kernel and initramfs (needs an existing arm64 Docker engine).
make guest
make install-guest            # copies vm/out/* to ~/.dockma/guest/

# 2. Build, sign and install the CLI to ~/.local/bin/dockma
make install

# 3. Start the VM
dockma start

# 4. Point the docker CLI at dockma
docker context use dockma     # created by `dockma start`
# or: export DOCKER_HOST=unix://$HOME/.dockma/docker.sock
docker run --rm hello-world

Also needs Xcode with Swift 6.4, and any arm64 Docker engine with buildx for the first guest build.

At a glance

$ dockma status
state:    running
docker:   ready (/Users/you/.dockma/docker.sock)
uptime:   12m 4s
vm:       6 CPUs, 4096 MiB, kernel 6.18.57
agent:    connected 0.5.0
ports:    8080, 1053/udp
daemon:   pid 55658

How it works

A lightweight daemon owns the VM and pipes the Docker, shell and port connections to a Go agent in the guest over vsock. The guest image is built reproducibly from one Dockerfile with pinned versions; the kernel and Docker downloads are sha256-checked.

Full architecture →