Podman: The New Replacement for Docker

Ángel Ortega
4 min readNov 15, 2024

--

Introduction

In the world of containers, Docker has been the go-to tool for years to build and manage packaged applications. However, the rise of Podman has disrupted the landscape. Designed to address some inherent issues with Docker, such as its reliance on a centralized daemon and the need for root privileges, Podman presents itself as a modern, secure, and standards-compliant alternative.

In this article, we’ll dive deep into what Podman is, how it differs from Docker, and why it might be the next standard in containerization. We’ll also include practical examples to help you start using Podman today.

What is Podman?

Podman is an open-source tool for creating, running, and managing containers and pods. Like Docker, it uses the Open Container Initiative (OCI) standard, ensuring compatibility with existing container images and tools. But what makes it different?

Key Features of Podman:

  1. Rootless by Design: Podman allows containers to run without root privileges, significantly improving security in production environments.
  2. Daemonless Architecture: Unlike Docker, Podman doesn’t rely on a centralized daemon. Each container is an independent process managed directly by the operating system.
  3. Docker CLI Compatibility: Podman supports Docker commands. By using alias docker=podman, you can seamlessly migrate existing scripts without modification.
  4. Native Kubernetes Integration: Podman makes it easy to create and manage pods, and it can generate Kubernetes-ready YAML files using the podman generate kube command.

Why is Podman Gaining Ground Over Docker?

While Docker remains widely used, Podman offers significant advantages that make it an attractive alternative:

Enhanced Security

Docker runs its daemon as a root process, which can be a security risk if vulnerabilities are exploited. In contrast, Podman’s rootless approach reduces the attack surface and enhances system security.

No Daemon Dependency

If Docker’s daemon (dockerd) crashes, it can stop all running containers. Podman eliminates this dependency by treating each container as an independent process, improving stability and reducing single points of failure.

Standards Compliance

Podman adheres to OCI specifications, ensuring compatibility with container images and registries like Docker Hub or Quay.io.

Lightweight and Modular

Podman uses system utilities like runc and conmon to manage containers, making it more lightweight compared to Docker.

Getting Started with Podman

Installation

Depending on your operating system, the installation process varies:

  • On Fedora/Red Hat (pre-installed):
sudo dnf install podman
  • On Ubuntu/Debian:
sudo apt update
sudo apt install podman -y
  • On macOS and Windows: You can use tools like Podman Desktop or set up a virtual machine that supports Podman.

Using Podman as Docker

To simplify the transition from Docker, you can create an alias in your terminal:

alias docker=podman

This lets you run commands like docker run or docker build directly with Podman, without altering your existing scripts.

Practical Examples

Running a Simple Container

Launching an Nginx container with Podman is as straightforward as with Docker:

podman run -d --name my-server -p 8080:80 nginx

Access http://localhost:8080 to verify the container is running.

Creating a Pod with Multiple Containers

Podman natively supports pod creation, making it easy to run related services:

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

# Add containers to the pod
podman run --pod my-pod -d nginx
podman run --pod my-pod -d redis

Both containers will share the same network and ports of the pod.

Generating a Kubernetes YAML File

With a single command, you can convert your Podman pod into a Kubernetes-ready file:

podman generate kube my-pod > my-pod.yaml

This file can be deployed directly to a Kubernetes cluster.

Advantages and Disadvantages of Podman

Advantages:

  • Enhanced security through its rootless design.
  • Independent container processes improve stability.
  • Fully compatible with Docker images and commands.
  • Lightweight and easy integration with Kubernetes.

Disadvantages:

  • Limited support for Windows and macOS.
  • A smaller ecosystem compared to Docker.

Ideal Use Cases for Podman

  • Production: In environments where security is a top priority, Podman’s rootless execution is ideal.
  • Local Development: Its Docker-compatible CLI makes it easy for developers to adopt.
  • Kubernetes: The ability to natively manage pods and generate Kubernetes YAML files makes Podman perfect for Kubernetes integration.

Conclusion

Podman is proving to be a modern and secure alternative to Docker. With its focus on security, stability, and standards compliance, it’s positioning itself as a key tool in the containerization space. Whether you’re looking to improve security in your production environments or simplify your development workflows, Podman is worth exploring.

I hope this article has helped you understand why Podman is gaining popularity and how you can start using it. Have you tried Podman yet? Share your experience in the comments!

--

--

Ángel Ortega
Ángel Ortega

No responses yet