liveBook · Manning

Chapter 1: Podman: A next-generation container engine

What you will learn in chapter 1 of Podman in Action: Secure, rootless containers for Kubernetes, microservices, and more

This introduction presents Podman as a Docker-familiar container engine with stronger default security and previews the ways the book will use it.

After this chapter you will be able to

Section by section

Introduction

This introduction presents Podman as a Docker-familiar container engine with stronger default security and previews the ways the book will use it.

Key terms: Podman, Docker, non-root privileges, security, command-line interface (CLI), local container engine, single node, remote REST API, Buildah, Skopeo

1.1 About all these terms

This section defines the main container-tool categories and positions Podman as a container engine for developing and running containers and pods.

Key terms: container orchestrators, container engines, OCI container runtimes, Kubernetes, Podman, runc, daemonless container engine, OCI Containers, rootless mode, alias Docker = Podman

1.2 A brief overview of containers

The section defines Linux containers as isolated groups of processes and introduces the resource controls, security constraints, and namespaces that provide that isolation.

Key terms: containers, processes, shared libraries, resource constraints, cgroups, control groups, security constraints, dropped Linux capabilities, SELinux, read-only access to kernel filesystems

1.2.1 Container images: A new way to ship software

This section explains how container images make software delivery more consistent and why containers require less operating-system management than VMs.

Key terms: container image, container registry, dependency management, shared libraries, VMs, containerized applications, host kernel, user spaces

1.2.2 Container images lead to microservices

The section explains how container images isolate application dependencies and make it practical to compose reusable microservices.

Key terms: container image, C library, conflicting requirements, microservices, monolithic applications, container images, network, multiple instances

1.2.3 Container image format

This section explains what a container image contains and how Podman turns a stored image into a running container.

Key terms: rootfs, JSON file, manifest list, default architecture, Skopeo, --raw, tar, container registry, OCI runtime specification, container runtime

1.2.4 Container standards

This section explains how OCI standards define image and runtime formats so container engines such as Podman and Docker can use the same images.

Key terms: OCI, OCI Image Format, OCI Runtime Specification, OCI runtimes, JSON file, OCI standards, Podman, Docker, container registries, container engines

1.3 Why use Podman when you have Docker?

Introduces the case for Podman alongside Docker: open-source choice and a design the author argues improves container security and use.

Key terms: open source, choice, Podman, Docker, Podman's design, security, use of containers

1.3.1 Why have only one way to run containers?

This subsection explains why Podman’s later arrival gave its developers a chance to rethink Docker’s design and introduce new features.

Key terms: Podman, Docker, Open Container Initiative, open source

1.3.2 Rootless containers

This section explains why Podman’s rootless mode lets ordinary users run containers without host-root privileges and contrasts it with the risks of conventional Docker access.

Key terms: rootless mode, standard login account, root access, Docker user group, docker.sock, --privileged, /host, chroot, UID, audit logs

1.3.3 Fork/exec model

This section contrasts Docker’s daemon-based path to a container with Podman’s Unix-style fork/exec path and explains how Podman can share storage without a coordinating daemon.

Key terms: Docker client, Docker daemon, containerd, OCI runtime, PID1, stdin, fork/exec, container registry, container storage, inter-process communication (IPC)

1.3.4 Podman is daemonless

This section contrasts Docker’s continuously running daemons with Podman’s daemonless way of launching containers and explains why the difference matters on resource-limited machines.

Key terms: daemonless, container images, container runtimes, Docker client, daemons, overhead

1.3.5 User-friendly command line

This section explains why Podman follows Docker’s command-line interface and how users can run familiar Docker commands through Podman.

Key terms: Docker CLI, Podman CLI, Docker Swarm, alias docker=podman, podman-docker, docker ps, podman ps, man page

1.3.6 Support for REST API

This section explains how Podman’s socket-activated REST API service supports existing Docker tools and remote clients.

Key terms: socket-activated REST API service, Docker API, Podman API, Docker socket, docker-compose, docker-py, Podman REST API, remote Podman clients, Linux machine

1.3.7 Integration with systemd

This section explains how Podman integrates containers with systemd, both as host-managed services and as environments that can run systemd inside the container.

Key terms: systemd, systemd unit files, socket activation, service notifications, cgroups, PID1, limited privileges, Docker daemon, startup ordering, service ready notifications

1.3.8 Pods

This section introduces pods as groups of containers managed together and shows how Podman connects single-host pods with Kubernetes YAML.

Key terms: pod, Pod Manager, microservices, shared storage/network resources, podman generate kube, podman play kube, Kubernetes YAML, single host

1.3.9 Customizable registries

This section contrasts Docker’s fixed short-name registry with Podman’s configurable registry choices and remembered aliases.

Key terms: short name, container registry, short-name alias, complete image name, blocking registries, signed images, image mirrors, hardcoded short names

1.3.10 Multiple transports

This subsection introduces Podman’s image transports and the range of sources and formats from which it can run images.

Key terms: transports, container registries, local containers storage, OCI format, OCI TAR format, legacy Docker TAR format

1.3.11 Complete customizability

Podman lets users change container-engine defaults through configuration files, including defaults that affect security.

Key terms: built-in defaults, containers.conf, namespaces, SELinux, capabilities, /usr/share/containers/containers.conf, /etc/containers/containers.conf, $HOME/.config/containers/containers.conf, rootless mode

1.3.12 User-namespace support

This section explains how Podman uses user namespaces to isolate rootless users and individual containers, and contrasts that support with Docker's.

Key terms: rootless mode, user namespace, UIDs, unique user namespace, UID separation, single, separate, user namespace

1.4 When not to use Podman

This section defines Podman’s single-host scope and explains why multi-machine orchestration requires another tool, usually Kubernetes rather than Swarm.

Key terms: single host, rootless, rootful, container orchestrator, Kubernetes, Swarm, grid/HPC computing

1.5 Summary

The chapter summary recaps how images and registries improve software delivery and why Podman is a practical, Docker-compatible, security-focused engine for single-node containers.

Where this is used later

Concepts explained in this chapter

Chapter 2: Command line →

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.