TL;DR
- "Docker" is three layers: the runtime, the engine/CLI, and Docker Desktop. Most people only need to replace Docker Desktop.
- On a Mac? OrbStack if $8/user/month is fine, or Colima if you want free and terminal-only.
- Want free with a GUI, at any company size? Podman Desktop or Rancher Desktop.
- Running Linux servers? Podman (daemonless, rootless). For minimal CI runners, nerdctl.
- Your Dockerfiles, Compose files, and images keep working. OCI standards make switching low-risk.
- Sometimes you don't need containers at all. There's a section on that below.
Docker didn't invent containers, but for a decade it basically was containers.
That started to change in 2021. Docker Inc. announced that Docker Desktop would require a paid subscription for commercial use at companies with more than 250 employees or $10M in revenue. Overnight, a lot of teams learned the difference between "Docker the format" and "Docker the product."
Five years later, the ecosystem has sorted itself out. You can keep your Dockerfiles, your docker compose habits, and your registry workflow, and swap out almost everything underneath. Here's what to swap in, grouped by what each tool actually replaces.
First: which Docker are you replacing?
"Docker" is three layers stacked on top of each other:
- The runtime (containerd + runc) creates and runs the containers. It's open source and shared by almost everyone, Kubernetes included.
-
The engine and CLI is the
dockercommand plus the daemon it talks to. - Docker Desktop is the macOS/Windows app that bundles a Linux VM, a GUI, and the licensing that started all of this.
Most "I want a Docker alternative" requests mean layer 3. Some mean layer 2. Almost nobody needs to replace layer 1.
Figure out which layer you mean, and the choice gets much easier.
Engine and CLI alternatives
Podman
Podman is the most complete drop-in replacement for the Docker engine.
- It's daemonless, so there's no long-running root process.
- It's rootless by default. That's why security-focused teams and most Linux distros have moved to it.
The CLI mirrors Docker closely enough that a single alias covers most day-to-day work:
# macOS: Podman runs inside a small Linux VM
brew install podman
podman machine init
podman machine start
# Linux: install from your distro's package manager, no VM needed
alias docker=podman
docker run --rm -p 8080:80 nginx # actually Podman
Podman also has native pods: groups of containers that share a network namespace. It can generate Kubernetes YAML from running containers, which is handy if you're heading toward k8s anyway:
podman pod create --name web -p 8080:80
podman run -d --pod web nginx
podman kube generate web > web-pod.yaml
Two sibling tools round it out:
- Buildah builds images without a daemon.
- Skopeo inspects and copies images between registries without pulling them.
Trade-offs: podman compose has improved a lot, but it still differs from Docker Compose on some edge cases. Some third-party tools also still expect a Docker socket at a fixed path.
nerdctl (containerd directly)
If you're happy to go one layer lower, nerdctl gives you a Docker-compatible CLI that talks straight to containerd. Many of the desktop tools below use it internally.
nerdctl run -d -p 8080:80 --name web nginx
nerdctl compose up -d
You also get containerd features that Docker doesn't expose, such as lazy image pulling and image encryption. It's a great fit for Linux servers and CI runners where you want as few moving parts as possible.
Docker Desktop alternatives (macOS and Windows)
Most of the real choice happens here. On a Mac or a Windows machine you always need a Linux VM somewhere, and how that VM is managed makes a big difference to speed and battery life.
OrbStack (macOS)
OrbStack has effectively become the default on Mac. It's a commercial tool, but the performance gap is real:
- It uses roughly a third of Docker Desktop's memory.
- It starts in under two seconds.
- File sharing and port forwarding work without configuration.
- It can run full Linux VMs alongside containers, and it includes Kubernetes (via K3s).
brew install orbstack
# your existing docker / docker compose commands just work
It's free for personal use and $8/user/month for commercial use. That's cheaper than Docker Desktop, but not free for teams.
Trade-offs: macOS only, and closed source.
Colima (macOS and Linux)
Colima is the free, no-frills option. It's a thin wrapper around Lima that starts a VM running either the Docker engine or containerd, and you keep using your normal docker CLI.
brew install colima docker
colima start --cpu 4 --memory 8 --vm-type vz --mount-type virtiofs
docker ps
It's terminal-only, and you'll tune CPU, memory, and mount type yourself. In return it's stable and fully open source.
Lima
Lima is the layer underneath Colima. It runs Linux VMs on macOS with automatic file sharing and port forwarding.
brew install lima
limactl start
lima uname -a
Use it directly when you want full control over the VM, or several VMs running different runtimes. It isn't a container tool on its own, but many of the tools in this list are built on it.
Finch (AWS)
Finch is AWS's open-source bundle of Lima, containerd, nerdctl, and BuildKit. Think of it as a more opinionated Colima: one install, no daemon, and a finch command that works like docker.
brew install --cask finch
finch vm init
finch run --rm public.ecr.aws/finch/hello-finch
It's a reasonable choice if you're an AWS shop and want a big vendor behind your tooling.
Rancher Desktop
Rancher Desktop is the pick for Kubernetes-first developers:
- It's free and open source.
- It has a GUI.
- It runs a local k8s cluster that you can pin to the same version as production.
- You can switch the runtime between containerd and the Docker engine.
brew install --cask rancher
It's heavier than the CLI tools because Kubernetes always comes along. If you live in kubectl anyway, that's a feature rather than a cost.
Podman Desktop
Podman Desktop is the GUI companion to Podman, now well into its 1.x releases with strong Red Hat backing. It manages containers, pods, images, and Kubernetes connections.
brew install --cask podman-desktop
It's the natural choice if you already use Podman on Linux and want the same model on your laptop. Like Rancher Desktop, it's free at any company size and has a GUI.
Apple's container tooling (macOS)
This one is worth watching. At WWDC 2025, Apple open-sourced a native container CLI and a Containerization framework. Unlike everything else in this list, they run each container in its own lightweight VM, which isolates containers from each other more strongly.
container system start
container run --rm docker.io/library/alpine:latest echo hi
It's still early, and the tooling around it is thin. Expect other tools to start building on it.
Sometimes you don't need a container at all
A lot of local Docker usage isn't really about containers. It's "I need Postgres plus some backend services running so I can develop." The Supabase local stack is a good example: about 12 containers and roughly 2.3 GB of Docker images, just to run your app's backend on a laptop.
If that's your situation, you can skip the container layer entirely. tinbase is an open-source, Supabase-compatible backend that runs as a single process:
npx tinbase start
import { createClient } from '@supabase/supabase-js'
// same SDK, pointed at the local process — no Docker
const supabase = createClient('http://127.0.0.1:54321', ANON_KEY)
const { data } = await supabase
.from('todos')
.select('*')
.eq('done', false)
What you get:
- Real Postgres, with Row Level Security, Auth, Storage, and Realtime.
-
Your existing setup: it reads your
supabase/migrationsfolder, and the officialsupabase-jsSDK works unchanged.
Trade-off: it's alpha. That's fine for local dev and prototypes, but not production-ready yet.
The broader lesson goes beyond Supabase. Before you choose a Docker replacement, check whether the thing you're running actually needs to be a container.
Quick decision guide
| You want... | Use |
|---|---|
| Fastest, smoothest Mac experience, and $8/user/month is fine | OrbStack |
| Free at any company size, with a GUI | Podman Desktop or Rancher Desktop |
| Free, lightweight, terminal-only on Mac | Colima |
| Local Kubernetes that matches production | Rancher Desktop |
| Daemonless, rootless engine on Linux servers | Podman |
| Minimal CI runners | nerdctl + containerd |
| Full control over the VM | Lima |
| Local Postgres backend, no containers | A single-process alternative (see above) |
One piece of advice
Whatever you pick, pick it as a team.
Five developers on five different local setups is a support burden that will quickly cost more than you saved on licensing. Agree on one tool, script the setup, and move on:
# scripts/setup-containers.sh
#!/usr/bin/env bash
set -euo pipefail
brew install colima docker docker-compose
colima start --cpu 4 --memory 8 --vm-type vz --mount-type virtiofs
docker context use colima
echo "✅ containers ready"
And remember that none of this touches your Dockerfiles, your Compose files, or your images. OCI standards made this whole ecosystem possible, and they're why switching is much less scary than it sounds.
What's your team running locally in 2026? Did you leave Docker Desktop, or decide it was worth paying for? Drop it in the comments. I'm especially curious whether anyone has moved real workloads onto Apple's container yet. 👇
Top comments (0)