Source: internet

Podman Primer

Jagadeesh Malakannavar
4 min readJul 6, 2024

--

Podman is an open-source container management tool developed by Red
Hat that serves as a drop-in replacement for Docker.

Key Features of Podman

Daemonless Architecture:
Unlike Docker, which relies on a centralized daemon to manage
containers, Podman operates without a daemon. This enhances
security and stability since it reduces the single point of
failure and security vulnerabilities associated with the
Docker daemon.

Rootless Containers:
Podman supports running containers as a non-root user. This
improves security by limiting the privileges of container
processes, making it harder for malicious code to escalate
privileges and compromise the host system.

Compatibility with OCI Standards:
Podman adheres to the Open Container Initiative (OCI)
standards, ensuring compatibility with OCI-compliant container
images and runtimes. This allows for greater interoperability
within the container ecosystem.

Command-Line Interface (CLI) Compatibility:
Podman’s CLI is designed to be highly compatible with Docker’s
CLI. This means most Docker commands can be used with Podman
with minimal modifications, making it easier for teams to
transition from Docker to Podman.

Pod Support:
Similar to Kubernetes, Podman introduces the concept of pods,
which are groups of containers that share resources and
network namespaces. This facilitates the management of
multi-container applications and aligns well with Kubernetes’
pod-based architecture.

Integration with Kubernetes:
Podman can generate Kubernetes YAML files from existing
containers or pods, simplifying the process of moving
containerized applications to Kubernetes. This makes it easier
to scale applications from local development to production
environments.

Benefits of Using Podman in a DevOps Workflow

Enhanced Security:
Running rootless containers and eliminating the need for a
central daemon reduces the attack surface and improves overall
security posture.

Improved Flexibility and Portability:
With its adherence to OCI standards and CLI compatibility with
Docker, Podman allows for seamless transitions and integration
with existing container workflows.

Streamlined Kubernetes Integration:
Podman’s ability to work with Kubernetes directly enables
smoother deployment processes and better alignment with modern
container orchestration practices.

Reduced Overhead:
Without a daemon constantly running in the background, Podman
can reduce resource consumption and improve system efficiency.

Difference between docker and podman

Tutorial of Podman:

Here’s a basic tutorial to get you started with Podman. This guide
will cover installation, basic commands, and usage scenarios similar
to Docker.

1. Installation

On Fedora

$ sudo dnf install podman

On CentOS/RHEL

$ sudo yum install -y podman

On Debian

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

2. Basic Commands

Checking Podman Installation

Verify the installation and check the version:

$ podman --version  

Pulling an Image

Pull a container image from a registry (default is Docker Hub):

$ podman pull nginx

Listing Images

List all the images available locally:

$ podman images

Running a Container

Run a container using the pulled image:

$ podman run -d --name mynginx -p 8080:80 nginx
  • -d: Run in detached mode
  • --name: Assign a name to the container
  • -p: Map port 8080 on the host to port 80 on the container

Listing Running Containers

List all running containers:

$ podman ps

List all containers (running and stopped):

$ podman ps -a

Stopping a Container

Stop a running container:

$ podman stop nginx

Removing a Container

Remove a stopped container:

$ podman rm nginx

Removing an Image

Remove an image:

$ podman rmi nginx

3. Advanced Usage

Running Containers as a Non-Root User

Podman allows running containers without root privileges. Simply execute the same commands as a non-root user.

Creating and Running Pods

Podman supports the concept of pods:

$ podman pod create --name mypod
$ podman run -dt --pod mypod nginx
$ podman run -dt --pod mypod redis

Generating Kubernetes YAML

Generate Kubernetes YAML from an existing container or pod:

$ podman generate kube mypod > mypod.yaml

Building Images

Build a container image from a Dockerfile:

$ podman build -t myimage .

4. Integrating Podman with Systemd

Generate systemd service files for your containers or pods:

$ podman generate systemd --name mynginx > ~/.config/systemd/user/mynginx.service
$ systemctl --user enable --now mynginx.service

5. Troubleshooting and Logs

Viewing Container Logs

Check logs for a container:

$ podman logs nginx

Inspecting Containers

Inspect a container to view detailed information:

$ podman inspect nginx

Podman is a powerful container management tool that provides a secure, daemonless alternative to Docker, with additional features such as rootless containers and pod support. By following this tutorial, you should be able to perform basic container operations and start integrating Podman into your workflow. For more advanced use cases and detailed documentation, refer to the official Podman documentation: Podman Docs.

--

--

No responses yet