Header

Understanding Podman: Docker's Open Source Alternative

Docker, Open Source, Tips & Tricks, and What Is

Post Image

Introduction

In the ever-evolving world of containerization, Docker has long been the dominant player. However, a powerful alternative has been gaining traction in recent years: Podman. At DeployHQ, we're always exploring tools that can enhance your deployment workflow, and Podman deserves your attention.

Today, we'll dive into what Podman is, how it differs from Docker, and how you can start using it in your projects.

What is Podman?

Podman (Pod Manager) is an open-source container engine developed by Red Hat that allows you to manage containers and container images. It's designed to be a drop-in replacement for Docker with some significant architectural differences that address security concerns and provide enhanced features.

Podman enables you to:

  • Create, run, and manage containers
  • Pull and push container images
  • Build container images
  • Manage container resources
  • Run containers in pods (groups of containers)

Key Differences Between Podman and Docker

1. Daemonless Architecture

The most significant difference between Podman and Docker is their architectural approach:

  • Docker uses a client-server architecture with a central daemon (dockerd) that runs with root privileges. All container operations go through this daemon.
  • Podman uses a daemonless architecture. It doesn't require a running daemon to function, which means containers run directly as child processes of the Podman command.

This daemonless approach offers several advantages:

  • Reduced security risks (no privileged daemon)
  • Better system resource management
  • No single point of failure
  • Containers survive Podman restarts

2. Rootless Containers

Podman was designed with security in mind:

  • It allows running containers without root privileges
  • Users can run containers as themselves, reducing the attack surface
  • It leverages user namespaces to map container UIDs to unprivileged user UIDs

3. Pod-Native Support

As the name suggests, Podman has native support for pods:

  • A pod is a group of containers that share resources
  • This concept is borrowed from Kubernetes
  • Makes the transition from development to Kubernetes production environments smoother

4. Docker Compatibility

Despite the differences, Podman is designed to be compatible with Docker:

  • Uses the same OCI (Open Container Initiative) container images
  • Supports the same commands and flags as Docker
  • Provides a Docker-compatible API
  • Even supports a podman-docker package that creates Docker command aliases

Getting Started with Podman

Installation

On Fedora/RHEL/CentOS:

sudo dnf install podman

On Ubuntu:

sudo apt-get update
sudo apt-get -y install podman

On macOS (with Homebrew):

brew install podman
podman machine init
podman machine start

Basic Commands

If you're familiar with Docker, you'll find Podman commands very similar:

Pull an image:

podman pull nginx

Run a container:

podman run -d -p 8080:80 nginx

List running containers:

podman ps

Stop a container:

podman stop <container_id>

Remove a container:

podman rm <container_id>

Build an image from a Dockerfile:

podman build -t myapp:latest .

Using Pods

One of Podman's unique features is pod support:

Create a pod:

podman pod create --name mypod -p 8080:80

Run containers in the pod:

podman run -d --pod mypod nginx
podman run -d --pod mypod redis

List pods:

podman pod list

Migrating from Docker to Podman

Transitioning from Docker to Podman is straightforward due to their command compatibility:

1- Install Podman on your system 2- You can create an alias for the Docker command:

alias docker=podman

3- Your existing Docker commands, Dockerfiles, and Docker Compose files will work with minimal changes

For Docker Compose support, Podman provides podman-compose or you can use the newer podman play kube command that accepts Kubernetes YAML files.

When to Choose Podman

Podman might be the right choice when:

  • Security is a top priority
  • You want to run containers without root privileges
  • You're working in environments where a daemon is problematic
  • You're developing applications for Kubernetes deployment
  • You're working in Red Hat environments (RHEL, CentOS, Fedora)

Conclusion

Podman represents a significant evolution in container technology, addressing some of Docker's architectural limitations while maintaining compatibility. Its focus on security, daemonless architecture, and pod-native support makes it an attractive option for many deployment scenarios.

At DeployHQ, we support both Docker and Podman workflows, allowing you to choose the containerization technology that best fits your project requirements. Whether you're sticking with Docker or exploring Podman, our platform can help you automate your deployments with ease.

Have you tried Podman in your projects? We'd love to hear about your experiences in the comments below!


DeployHQ is a powerful deployment platform that helps teams automate their deployment workflows. Learn more about our container deployment solutions.

A little bit about the author

Facundo | CTO | DeployHQ | Continuous Delivery & Software Engineering Leadership - As CTO at DeployHQ, Facundo leads the software engineering team, driving innovation in continuous delivery. Outside of work, he enjoys cycling and nature, accompanied by Bono 🐶.

Tree

Proudly powered by Katapult. Running on 100% renewable energy.