Colima
Colima is a free, minimal container runtime for macOS and Linux — run Docker and containerd without Docker Desktop, powered by Lima VMs.
✅ Pros
- + Free alternative to Docker Desktop (which requires paid license for companies >250 employees)
- + Native Apple Silicon (M1/M2/M3) support with Rosetta x86 emulation
- + Multiple runtimes: Docker (default), containerd, Kubernetes
- + Configurable CPU/RAM/disk allocation per profile
- + Rootless containers supported for security
⚠️ Cons
- − CLI-only — no GUI like Docker Desktop
- − Some Docker Desktop features not available (Dev Environments, Docker Extensions)
- − Occasional quirks with volume mounts vs Docker Desktop
- − Less polished DX for new Docker users
Overview
Colima (Containers in Lima) is the most popular Docker Desktop replacement on macOS. When Docker Inc. changed their licensing to require paid subscriptions for companies with 250+ employees, many engineering teams switched to Colima. It runs Docker Engine (or containerd) inside a Lima VM, giving you a full Docker-compatible CLI experience for free.
Installation
# Install Colima and Docker CLI (no Docker Desktop)
brew install colima docker docker-compose
# Start Colima with default settings
colima start
# Verify Docker works
docker run hello-world
Configuration
# Start with custom resources
colima start --cpu 4 --memory 8 --disk 60
# Apple Silicon with x86 emulation (for amd64 images)
colima start --arch x86_64 --vm-type vz
# Apple Silicon native (faster, for arm64 images)
colima start --arch aarch64 --vm-type vz
# With Kubernetes included
colima start --with-kubernetes
Multiple Profiles
Run different environments simultaneously:
# Create a high-resource profile for heavy workloads
colima start --profile heavy --cpu 8 --memory 16
# Switch Docker context to use it
docker context use colima-heavy
# Back to default
docker context use colima
# List all profiles
colima list
Kubernetes Support
# Start Colima with built-in K3s (lightweight Kubernetes)
colima start --with-kubernetes
# kubectl works automatically
kubectl get nodes
# NAME STATUS ROLES AGE
# colima Ready control-plane,master 1m
# Deploy a pod
kubectl run nginx --image=nginx
Config File
Persist settings in ~/.colima/default/colima.yaml:
# ~/.colima/default/colima.yaml
cpu: 4
memory: 8
disk: 60
arch: host
runtime: docker
kubernetes:
enabled: false
vmType: vz # Apple Virtualization Framework (faster on M-series)
rosetta: true # x86 emulation via Rosetta
Colima vs Docker Desktop
| Colima | Docker Desktop | |
|---|---|---|
| Cost | Free | Free (personal) / Paid (business) |
| GUI | ❌ | ✅ |
| Apple Silicon | ✅ | ✅ |
| Kubernetes | ✅ (K3s) | ✅ (K3s) |
| Extensions | ❌ | ✅ |
| Dev Environments | ❌ | ✅ |
| Resource usage | Lower | Higher |
For most backend developers who only need docker run and docker compose up, Colima is a drop-in replacement that starts faster and uses less memory.
Quick Start
Replace Docker Desktop with Colima in under 5 minutes on macOS:
# 1. Uninstall Docker Desktop (optional but recommended to avoid conflicts)
# Applications → Docker → uninstall, or: brew uninstall --cask docker
# 2. Install Colima and the Docker CLI tools
brew install colima docker docker-compose docker-credential-helper
# 3. Start Colima with sensible defaults for M-series Macs
colima start --cpu 4 --memory 8 --disk 60 --vm-type vz --vz-rosetta
# --vm-type vz → Apple Virtualization Framework (faster than QEMU on M1/M2/M3)
# --vz-rosetta → enables x86 emulation for amd64 images via Rosetta 2
# 4. Verify everything works
docker info # should show Colima as the server
docker run hello-world
docker compose version
# 5. Make Colima start automatically at login
colima start --foreground & # or use a launchd agent
# Day-to-day usage — same Docker commands you already know
docker build -t myapp .
docker compose up -d
docker ps
docker logs myapp
# Stop Colima when not in use (frees RAM)
colima stop
# Check status
colima status
To persist startup settings so you don’t have to repeat flags every time, edit ~/.colima/default/colima.yaml after the first start. Set cpu, memory, disk, and vmType to your preferred defaults. Colima reads this file on every colima start.