Join WhatsApp
Join Now
Join Telegram
Join Now

Mastering Linux Containers Without Docker: Podman vs LXD vs Buildah Comparison

Avatar for Noman Mohammad

By Noman Mohammad

Published on:

Your rating ?

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 systemd for 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.

Leave a Comment