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.
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 60sizes 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-rosettalets the VM runlinux/amd64images 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.