As a DevOps engineer working on a MacBook M3, I switched from Docker Desktop to Podman. Rootless, daemonless and fully open source Podman fits perfectly into my workflow. In this article I explain how to install Podman on macOS using PowerShell, how to set up Podman Desktop, and which commands you’ll use every day.

What is Podman?

Podman is an open-source container engine developed by Red Hat. The key differences from Docker:

  • Rootless containers run as a regular user, no root privileges required
  • Daemonless no background service needed, each container is an independent process
  • OCI-compatible uses the same images as Docker, commands are largely identical
  • Free no licensing costs unlike Docker Desktop for enterprise use

Prerequisites

  • macOS (Apple Silicon or Intel)
  • Homebrew installed (brew.sh)
  • PowerShell 7+ (brew install --cask powershell)

Step 1: Install Podman via Homebrew

Open PowerShell (pwsh) and run:

# Install Podman CLI
brew install podman

# Install Podman Desktop (GUI)
brew install --cask podman-desktop

# Verify the installation
podman --version

Step 2: Create a Podman Machine

On macOS, containers don’t run directly on the host OS. Podman uses a lightweight virtual machine (Fedora CoreOS) as the container host. On Apple Silicon, an ARM64 image is used automatically.

# Create machine with custom resources
podman machine init `
    --cpus 4 `
    --memory 4096 `
    --disk-size 60 `
    --now

# Start the machine
podman machine start

# Check status
podman machine list

The --now flag starts the machine immediately after creation. For default settings, simply run podman machine init.

Step 3: Set up Podman Desktop

Podman Desktop is a native macOS application that provides a graphical interface for your container environment. After installation it offers:

  • Visual overview of containers, images, volumes and pods
  • Live log viewer per container
  • Port-forwarding management
  • Kubernetes/Pod configuration
  • Extensions for additional integrations

Launch Podman Desktop via Spotlight (Cmd+Space → "Podman Desktop"). The machine you created in step 2 will appear automatically.

Essential Podman Commands

Container management

# List running containers
podman ps

# All containers (including stopped)
podman ps --all

# Start / stop a container
podman start <name>
podman stop <name>

# Stop and remove a container
podman rm -f <name>

# Open a shell inside a container
podman exec -it <name> bash

# Follow container logs
podman logs -f <name>

Images

# Pull an image
podman pull ubuntu:22.04

# List local images
podman images

# Remove an image
podman rmi ubuntu:22.04

# Build an image from a Dockerfile
podman build -t my-app:1.0 .

Volumes

# Create a volume
podman volume create my-data

# List volumes
podman volume ls

# Start a container with a volume
podman run -d `
    --name my-app `
    -v my-data:/app/data `
    -p 8080:80 `
    nginx:latest

Networks

# List networks
podman network ls

# Create a network
podman network create my-network

# Connect a container to a network
podman network connect my-network <name>

Pods

Pods are a Podman-specific feature: multiple containers sharing the same network namespace, similar to Kubernetes pods. Port mapping is configured at the pod level.

# Create a pod
podman pod create `
    --name my-pod `
    -p 8080:80

# Add a container to the pod
podman run -d `
    --pod my-pod `
    --name frontend `
    nginx:latest

# Pod status
podman pod ps

# Stop the pod
podman pod stop my-pod

Machine management

# Machine status
podman machine list

# Stop machine (saves resources)
podman machine stop

# Start machine
podman machine start

# SSH into the machine (for debugging)
podman machine ssh

# Reset machine (wipes everything!)
podman machine reset

Useful tips for macOS

  • Port mapping: Always configure this at the pod level, not the container level
  • Volume mounts: On Linux you add :Z for SELinux compatibility — on macOS this is not needed
  • ARM64 images: Always use multi-arch images or explicitly pass --platform linux/arm64
  • Start on login: Add podman machine start as a login item via System Settings → General → Login Items

Conclusion

Podman is an excellent alternative to Docker Desktop on macOS. Its rootless architecture, free license and full Docker compatibility make it a logical choice for any DevOps engineer. With PowerShell as your primary shell and Podman Desktop as the GUI, you have a complete container environment on your MacBook M3.

In the next article I’ll show you how to install HashiCorp Vault in a Podman container including TLS, initialization and unseal key management with PowerShell SecretManagement.