$docker.recipes
·14 min read·Updated February 2026

Docker Desktop Alternatives: OrbStack, Podman, Colima, and More

Docker Desktop isn't the only option anymore. We compare OrbStack, Podman, Colima, and Rancher Desktop — with real benchmarks and practical migration tips.

dockerorbstackpodmancolimamacos

01Why Look Beyond Docker Desktop?

In January 2022, Docker Inc. changed the licensing for Docker Desktop: any company with more than 250 employees or $10M in revenue now needs a paid subscription. That single change kicked off an explosion of alternatives — and many of them are genuinely better than Docker Desktop for certain workflows. But licensing isn't the only reason to explore alternatives. Docker Desktop on macOS has long suffered from sluggish file I/O, high memory usage, and slow container startup times. On Linux, Docker Desktop adds a VM layer that most developers don't need at all. I've been testing alternatives for over a year now, running the same Compose stacks across Docker Desktop, OrbStack, Podman, and Colima. The differences are significant — some alternatives cut build times in half and use a fraction of the RAM. Here's what I found.

02OrbStack: The macOS Speed King

OrbStack is the one that made me permanently uninstall Docker Desktop. It's a macOS-only replacement that is drop-in compatible with the Docker CLI and Compose, but dramatically faster. The first thing you notice is startup time: OrbStack launches in about 2 seconds. Docker Desktop takes 20-30 seconds on my M2 MacBook Pro. That alone changes the developer experience — you stop planning your work around Docker's boot time. File I/O is where OrbStack really shines. Docker Desktop uses VirtioFS or gRPC-FUSE for file sharing, both of which add latency. OrbStack uses a custom file-sharing implementation that is nearly native speed. In my testing, a Next.js hot reload that took 3-4 seconds with Docker Desktop drops to under 500ms with OrbStack. Memory usage is roughly 50% lower. Docker Desktop idles at about 2-3GB on my machine. OrbStack idles at about 800MB-1.2GB with the same containers running. The migration is trivial — OrbStack even imports your existing Docker images and volumes on first launch.
[terminal]
1# Install OrbStack (macOS only)
2brew install orbstack
3
4# OrbStack replaces the docker CLI — verify it works
5docker version
6docker compose version
7
8# Your existing compose files work unchanged
9cd ~/projects/my-stack
10docker compose up -d
11
12# Import existing Docker Desktop images (automatic on first launch)
13# Or manually: orbctl docker migrate

OrbStack's file sync performance makes it especially good for interpreted language development (Node.js, Python, Ruby) where file watching is critical. If bind mount performance has been your biggest Docker pain point, OrbStack fixes it.

03Podman: The Daemonless, Rootless Option

Podman takes a fundamentally different approach. There's no central daemon — each container runs as a direct child process. This means no single point of failure and true rootless containers by default. For security-conscious teams, Podman is compelling. Running containers without root privileges means a container escape doesn't give an attacker root on the host. In corporate environments where security teams audit everything, Podman's architecture is much easier to justify. Podman also supports pods — groups of containers that share a network namespace, similar to Kubernetes pods. If you're building for eventual Kubernetes deployment, this concept maps directly. The catch: Compose compatibility isn't 100%. Podman uses podman-compose or supports docker-compose through a compatibility layer, but edge cases exist. Depends_on with health checks, some network modes, and build contexts with Dockerfiles that use BuildKit features can behave differently. For straightforward Compose stacks it works great, but complex setups may need tweaking.
[docker-compose.yml]
1# podman-compose works with standard Compose files
2# but some features need adjustment
3services:
4 web:
5 image: nginx:alpine
6 ports:
7 - "8080:80"
8 # Rootless: ports below 1024 need adjustment
9 # Use ports > 1024 or configure slirp4netns
10
11 app:
12 build: .
13 # Podman uses Buildah under the hood
14 # Most Dockerfiles work unchanged
15 volumes:
16 - ./src:/app/src:Z
17 # Note the :Z suffix — SELinux label for rootless

Podman's Compose v2 support has improved significantly but still has gaps. Test your existing docker-compose.yml files before migrating a team. The most common issues are with named volumes, depends_on conditions, and build arguments. Run podman-compose up and verify every service starts correctly.

04Colima: Lightweight CLI-First

Colima is the minimalist's choice. It creates a lightweight Linux VM using Lima and exposes the Docker (or containerd) socket. No GUI, no extras — just a VM running Docker that you interact with through the standard CLI. Colima appeals to developers who want Docker but not Docker Desktop's overhead. It uses about 1GB less RAM than Docker Desktop and starts faster. The trade-off is that you manage resources explicitly and there's no graphical dashboard. Configuration is done at VM creation time. You choose CPU cores, memory, disk size, and the container runtime. Once running, it's transparent — docker commands work normally.
[terminal]
1# Install Colima
2brew install colima docker docker-compose
3
4# Start with custom resources
5colima start --cpu 4 --memory 8 --disk 60
6
7# Use specific runtime (docker is default)
8colima start --runtime containerd
9
10# Verify Docker works
11docker context list
12docker run hello-world
13
14# Resource tuning — stop and restart with new settings
15colima stop
16colima start --cpu 6 --memory 12 --disk 100
17
18# Multiple profiles for different projects
19colima start --profile heavy --cpu 8 --memory 16
20colima start --profile light --cpu 2 --memory 4

Colima supports VZ framework on macOS 13+ with --vm-type vz --vz-rosetta for faster x86 emulation on Apple Silicon. This is helpful when you need to run amd64 images that don't have ARM builds.

05Rancher Desktop, Lima, and nerdctl

Rancher Desktop is the GUI alternative for developers who want a Docker Desktop-like experience without Docker Desktop. It's open source, free for all users (no licensing restrictions), and supports both dockerd and containerd as backends. The main advantage over Colima is the graphical interface: you can see running containers, manage images, and adjust resources through a native app. If you're transitioning a team from Docker Desktop and some members aren't comfortable with CLI-only tools, Rancher Desktop is the easiest migration path. Lima is what Colima is built on — it's the underlying VM manager. You can use Lima directly for maximum control, creating custom VMs with specific Linux distributions and configurations. Most developers don't need this level of control, but it's there for complex setups. nerdctl is containerd's CLI, designed as a Docker CLI-compatible alternative. It supports many Docker commands with the same flags and options. If you choose containerd as your runtime in Rancher Desktop or Colima, nerdctl is how you interact with it. The benefit: containerd is the same runtime that Kubernetes uses, so your local development environment is closer to production.

06Real-World Performance Comparison

I benchmarked all four alternatives on an M2 MacBook Pro (16GB RAM) running the same Docker Compose stack: a Node.js app, PostgreSQL, Redis, and Nginx. Each test was repeated 5 times and averaged. Cold start (time from launch to first docker command): Docker Desktop 24s, OrbStack 2s, Colima 8s, Rancher Desktop 15s. Docker build (Node.js app, no cache): Docker Desktop 45s, OrbStack 28s, Colima 42s, Rancher Desktop 48s. File sync (writing 1000 files via bind mount): Docker Desktop 12s, OrbStack 1.8s, Colima 9s, Rancher Desktop 11s. Idle RAM usage (4 containers running): Docker Desktop 2.8GB, OrbStack 1.1GB, Colima 1.6GB, Rancher Desktop 2.4GB. docker compose up (cached images): Docker Desktop 8s, OrbStack 3s, Colima 6s, Rancher Desktop 7s. OrbStack wins nearly every category, often by a wide margin. Colima is a solid middle ground. Rancher Desktop performs similarly to Docker Desktop but without the licensing cost.
[benchmark.sh]
1#!/bin/bash
2# Quick benchmark script — compare startup and build times
3# Run this after installing each alternative
4
5echo "=== Cold Start Benchmark ==="
6time docker info > /dev/null 2>&1
7
8echo "=== Build Benchmark (no cache) ==="
9docker builder prune -af > /dev/null 2>&1
10time docker build --no-cache -t bench-test .
11
12echo "=== File Sync Benchmark ==="
13mkdir -p /tmp/sync-test
14time for i in $(seq 1 1000); do
15 echo "file $i" > /tmp/sync-test/file-$i.txt
16done
17time docker run --rm -v /tmp/sync-test:/data alpine ls /data | wc -l
18
19echo "=== Compose Up Benchmark ==="
20time docker compose up -d
21docker compose down

OrbStack's file sync performance advantage is most noticeable with frameworks that watch many files — Next.js, Vite, Webpack. If your development workflow involves frequent file changes and hot reload, this is the benchmark that matters most.

07Which One Should You Use?

After a year of testing, here's my recommendation by use case: macOS development, performance matters: OrbStack. It's the fastest option by a significant margin and the migration from Docker Desktop is seamless. The free tier is generous, and the Pro plan at $8/month is worth it for professional use. Security-first, enterprise environments: Podman. Rootless containers and no daemon make it the easiest to approve through security reviews. The Compose compatibility gaps are shrinking with each release. CLI minimalist, resource-constrained machine: Colima. Minimal overhead, full Docker compatibility, and you only allocate what you need. Great for older machines or when you need to run Docker alongside other resource-heavy tools. Team migration from Docker Desktop: Rancher Desktop. The GUI lowers the barrier for developers who aren't comfortable with CLI-only tools, and it's completely free with no licensing concerns. Linux development: Just use Docker Engine. You don't need Docker Desktop on Linux, and none of these alternatives offer meaningful advantages over the native Docker daemon. Install docker-ce and docker-compose-plugin from Docker's official repository and you're done. One thing I'd avoid: running multiple alternatives simultaneously. They can conflict over the Docker socket and cause confusing errors. Pick one, commit to it, and only switch if you hit a genuine limitation.

About the Author

Frank Pegasus

DevOps engineer and self-hosting enthusiast with over a decade of experience running containerized workloads in production. Creator of docker.recipes.