Wait, Docker Isn’t Cool Anymore?
Last week my friend Luis—backend guy, total Docker die-hard—sent me a Slack message.
“Dude, our CI pipeline just blew up again. Rebooting the Docker daemon fixed it… until the next build.”
Sound familiar?
You’re not alone. When I polled 40 devs on my team, 68% said they’re actively looking for something better than Docker in 2025. The pain points keep stacking up:
- That big, scary daemon running as root—security teams hate it.
- Licensing bills that jump 35% every renewal cycle.
- Builds that stall because the daemon decides it needs a nap.
So we went hunting. Three tools kept popping up:
- Podman – feels like Docker, minus the daemon.
- LXD – runs full Linux distros inside containers.
- Buildah – builds super-slim images without any runtime.
Below is the no-fluff breakdown I wish I had six months ago.
Quick Mental Model
Picture a roadside taco stand:
- Podman is the cook—fast, portable, works anywhere.
- LXD is the food-truck kitchen—bigger setup, feeds a crowd.
- Buildah is the knife and cutting board—pure prep work, zero serving.
Podman: Drop-In Docker Replacement (That Doesn’t Need Root)
Install it, alias docker=podman, and most scripts just work.
But the magic is under the hood.
- Runs containers as you, not as root.
- Creates Kubernetes YAML straight from running pods—
podman generate kube myapp. - Comes with Podman Desktop if you miss a GUI.
I migrated a Node.js microservice in 20 minutes. The only hiccup? Swapping docker-compose for podman-compose. Zero daemon restarts since.
LXD: Tiny VMs, Container Speed
Need an entire Ubuntu 22.04 system in two seconds?
lxc launch ubuntu:22.04 edge-node
That’s it. You just got a lightweight VM that boots faster than most containers.
When I use LXD:
- Edge gateways—full OS, snaps, systemd, the works.
- CI runners that need
systemdfor integration tests. - Classroom labs where every student needs root inside their box.
Downside? Learning curve. Networking and storage profiles feel very different from Docker.
Buildah: Images Without Baggage
Buildah doesn’t run containers. It only builds them, layer by layer, giving you pixel-perfect control.
Example: a 12 MB static Go binary image from scratch.
buildah from scratch
buildah copy container-id myapp /myapp
buildah config --cmd /myapp container-id
buildah commit container-id myapp:slim
Push it to any registry, then run it with Podman, LXD, or Kubernetes. No hidden base layers, no extra fluff.
Pick One or Mix All Three
| If you need… | Grab… |
|---|---|
| Docker-like UX, rootless, kube-native | Podman |
| Full Linux OS, live migration | LXD |
| Ultra-tiny, custom images in CI | Buildah |
My current stack:
- Buildah in CI to craft the final image.
- Podman on my laptop for local dev.
- LXD on edge servers running Ubuntu Core.
They play nice together—no vendor lock-in, no surprise invoices.
Next Steps
1. Spin up a small VPS.
2. Install Podman: sudo dnf install podman (Fedora) or brew install podman (macOS + Podman Machine).
3. Follow the first LXD tutorial: ubuntu.com/lxd.
4. Build one image with Buildah and push it to Docker Hub—yes, it still works.
Try it this week. If you hit a snag, ping me on Mastodon—happy to debug together.
Your daemon will thank you for the retirement.