Let's start with Docker Desktop - the thing everyone uses and fucking hates.
The memory disaster
Starts innocent at ~300MB. Two hours of normal dev work later? com.docker.backend
is hogging 6GB like some kind of data vampire. Yesterday I watched it hit 8GB and my MacBook started making jet engine noises as everything swapped to disk. Had to force quit, restart Docker, wait 30 seconds for the daemon to wake up from its coma, then pray to whatever gods watch over container tools that it wouldn't die during my client demo.
File sync nightmare
Mac bind mounts are completely fucked. Save a JS file in my editor, sit there and wait... and wait... for webpack to notice the change. Builds that fly in 2 seconds on my Ubuntu desktop take 8+ seconds on this expensive MacBook because Docker's OSXFS bullshit treats every file operation like it's crossing an ocean. The performance issues have been documented for years, with community benchmarks showing 10-100x slower I/O compared to Linux.
CPU vampire
Zero containers running but Docker's daemon is still chewing through 10%+ CPU doing absolutely fucking nothing. Join a Zoom call and listen to my MacBook's fans spinning up because Docker's daemon apparently can't take a nap like a normal process.
Podman Desktop
Podman Desktop - Red Hat's attempt to fix Docker's daemon problem. No daemon, no memory hoarding, rootless everything. Sounds great until you try to actually use it.
What actually works
Podman uses actual zero RAM when idle. Not Docker's "300MB is basically zero" gaslighting. I mean zero bytes. Nothing. Nada.
What ruins your night
Permission errors. That compose file that worked yesterday? Now Postgres can't write to its data directory. Spent hours debugging this error:
Error: mounting "/Users/me/project/data" to "/var/lib/postgresql/data"
EACCES: permission denied, mkdir '/var/lib/postgresql/data/base'
The fix? Some bullshit flag buried 47 pages deep in the docs: podman run --userns=keep-id
. Naturally, I found this at 1:23 AM the night before my 9 AM client demo. The rootless containers documentation explains the security benefits but glosses over the UID mapping complexities that bite you in practice.
The security thing
No root daemon means containers can't hijack your entire machine. Which is nice in theory, when it actually fucking works.
Rancher Desktop
Rancher Desktop - some masochist decided "you know what developers need for local testing? A FULL FUCKING KUBERNETES CLUSTER." Uses K3s to make every simple container task feel like deploying to production. The Rancher architecture guide shows their enterprise focus, while K3s performance docs warn about the resource overhead.
The K8s tax
Even when I'm doing absolutely nothing, it's running kube-apiserver, kubelet, containerd, etcd and god knows what else. 500MB RAM just to exist. Want to spin up a simple Postgres container? Better write a fucking deployment manifest, service definition, and persistent volume claim. Three YAML files to do what used to be docker run postgres
.
When it's actually brilliant
If you deploy to real K8s clusters, the development-production parity is fucking incredible. I caught a service mesh routing bug in local dev that would have taken down prod for hours.
When it's overkill
Want to test a simple React app? Congratulations, you now need to understand deployments, services, and ingress controllers. It's like bringing an aircraft carrier to a canoe race.
OrbStack
OrbStack - holy shit, someone finally built container tools FOR macOS instead of just porting Linux garbage and crossing their fingers.
File I/O that doesn't make me want to quit coding
Remember those painful 8-second webpack rebuilds with Docker Desktop? OrbStack cranks them out in 2-3 seconds. Same MacBook, same exact project. It's like someone finally gave a shit about file performance instead of just making it "work." The VirtioFS implementation and performance benchmarks show why it's faster than Docker's antiquated approach.
Memory management like a sane app
OrbStack actually releases memory when containers stop. Groundbreaking fucking concept. Maybe Docker Desktop's com.docker.backend
could study this revolutionary idea called "not hoarding RAM forever."
The brutal reality
Mac only. Your Windows-using teammates? Fucked. Your Linux CI servers? Double fucked. OrbStack is amazing on my MacBook but completely useless everywhere else I need containers.
Network wizardry
Automatic domain mapping means curl postgres.container.local
actually works without me having to memorize which random port Docker mapped this time. It's the kind of polish that makes you realize how much other tools hate developers.
Bottom Line
Every single one of these tools sucks in its own special way. Pick the flavor of suffering that matches your priorities:
- Docker Desktop: Universal compatibility, universally slow, universally memory-hungry
- Podman Desktop: Actually secure, actually efficient, actually breaks at the worst possible moment
- Rancher Desktop: Kubernetes accuracy, Kubernetes complexity, Kubernetes resource consumption
- OrbStack: Blazing fast, Mac-only, abandons half your team
There's no perfect choice. Just different ways to hate your container tooling. More performance numbers here if you enjoy pain. The Container Runtime Landscape shows how fractured this space is, while Docker's enterprise docs try to justify the resource consumption.
Now let's talk about what these things actually cost you when you're trying to ship code.