Podman vs Docker Desktop: Choose Your Runtime

Podman vs Docker Desktop: Choose Your Runtime

January 17, 2026

TL;DR: The homelab project now supports both Podman and Docker Desktop as container runtimes. The Makefile auto-detects which one is available, or you can explicitly choose with RUNTIME=docker or RUNTIME=podman.


Based on feedback from readers, I’ve added Docker Desktop support to the homelab project. Now you can choose whichever container runtime fits your workflow better.

Why Both?

Different users have different preferences and constraints:

ConsiderationPodmanDocker Desktop
LicensingApache 2.0 (fully open source)Free for personal use
Resource usageLighter (~500MB VM)Heavier (~2GB with GUI)
FamiliarityNewer, Red Hat ecosystemIndustry standard
macOS integrationCLI-focusedNative GUI app
k3d compatibilitySupportedNative support

Both work great with k3d. Choose based on your preference.

Quick Start

Option A: Docker Desktop

# Install
brew install --cask docker

# Start Docker Desktop from Applications (or it auto-starts)

# Create cluster
make setup

Option B: Podman

# Install
brew install podman

# Initialize VM
make init-podman

# Create cluster
make setup

Runtime Auto-Detection

The Makefile automatically detects which runtime is available:

make start   # Detects Docker or Podman, starts the appropriate one
make status  # Shows which runtime is active

To force a specific runtime:

RUNTIME=docker make start
RUNTIME=podman make start

Switching Runtimes

If you want to switch from one runtime to another:

# 1. Backup Sealed Secrets keys (important!)
make sealed-secrets-backup

# 2. Delete the cluster
make clean

# 3. Stop current runtime
make stop

# 4. Start new runtime and recreate cluster
RUNTIME=docker make setup   # or RUNTIME=podman

Your GitOps configuration (ArgoCD ApplicationSets) will automatically resync all applications.

New Makefile Targets

TargetDescription
make init-dockerVerify Docker Desktop is running
make init-podmanInitialize Podman machine
make docker-startStart Docker Desktop
make docker-statusShow Docker Desktop status
make runtime-startStart detected runtime
make runtime-statusShow active runtime
make cluster-restartFull cluster recreate (with Sealed Secrets backup)
make sealed-secrets-backupBackup encryption keys
make sealed-secrets-restoreRestore encryption keys

Architecture

Both runtimes provide the same end result:

macOS
└── Podman VM or Docker Desktop VM
    └── k3d cluster "homelab"
        ├── 1 server + 3 agents
        ├── kubeAPI on Tailscale IP
        └── GitOps Stack (ArgoCD, Sealed Secrets, External Secrets)

The cluster configuration, GitOps setup, and all Kubernetes resources remain identical regardless of which runtime you choose.

Summary

  • Docker Desktop: Choose if you want a familiar, GUI-based experience
  • Podman: Choose if you prefer open source and lighter resource usage

Both are first-class citizens in this project. Pick one and get started!


Questions or feedback? Open an issue in the cd-homelab repository.