Colima as a Lean Docker Desktop Alternative on Apple Silicon

Run Docker on an Apple Silicon Mac with Colima instead of Docker Desktop: install, register the Compose plugin, enable Rosetta for amd64 images, and check it works.

Architectural diagram showing Colima running on macOS Apple Silicon with Virtualization.framework

If you only need Docker for local development on an Apple Silicon Mac, Docker Desktop brings a GUI, a background app and a licence you may not need. Colima runs the same Docker engine in a small Linux VM, and you keep using the normal docker and docker compose commands.

Here is the setup I use, checked on Colima 0.10.3 and Docker Compose 5.6.1.

Install Colima and the Docker CLI with Homebrew

brew install colima docker docker-compose

This installs only command-line tools. You do not need the Docker Desktop app; the docker CLI talks to the engine inside Colima's VM.

Register the Compose plugin

Homebrew installs Compose as a Docker CLI plugin, but the docker command does not look in Homebrew's plugin directory by default. Until you tell it to, docker compose fails with unknown command. Add the directory to ~/.docker/config.json, as Homebrew's install notes for docker-compose say:

{
  "cliPluginsExtraDirs": [
    "/opt/homebrew/lib/docker/cli-plugins"
  ]
}

If the file already exists, add the cliPluginsExtraDirs key to it instead of replacing it. Then check:

docker compose version

Start the VM with Rosetta enabled

colima start --cpu 4 --memory 8 --disk 60 --vz-rosetta
  • --cpu 4 --memory 8 --disk 60 sizes the VM: 4 CPUs, 8 GiB of memory, 60 GiB of disk. Without flags, Colima starts with 2 CPUs and 2 GiB, which is tight for anything with a database.
  • --vz-rosetta lets the VM run linux/amd64 images through Rosetta instead of slower emulation. It needs Apple's Virtualization framework (vz), which is already Colima's default VM type on macOS, so there is no need to pass --vm-type vz.

These settings are saved in the profile, so a later plain colima start reuses them.

Check that Docker is using Colima

docker context list

Colima creates a Docker context and switches to it on start, so the active context, marked with *, should be colima. Then run a container:

docker run --rm hello-world

To confirm Rosetta is working, run an amd64 image and check the architecture it reports:

docker run --rm --platform linux/amd64 alpine uname -m

It should print x86_64, even though the VM itself is aarch64.

Manage it day to day

Start Colima at login:

brew services start colima

See what is running and how much it has been given:

colima list

Stop the VM and give its memory back when you are done for the day:

colima stop

If a project needs a different setup, colima start --profile <name> creates a separate VM with its own settings and Docker context, and colima delete --profile <name> removes it.

Once this works, any docker compose up that worked under Docker Desktop should work the same way. While you are cleaning up your Mac setup, add a global gitignore for macOS system files so .DS_Store never reaches a repo again.

Subscribe to Code Insights

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe