Podman is an open-source, daemonless, Linux native tool designed to make it smooth to find, run, build, share and deploy applications using Open Containers Initiative (OCI) Containers and Container Images on your Linux System.
As it’s OCI-compliant, It can be used as a replacement for the better-known Docker runtime. Most Docker commands can be directly translated to Podman commands.
It provides a Docker-compatible command-line front end that can simply alias the Docker CLI, alias docker=podman.
What`s the Runtime?
To a lot of people, a “container” is still a “Docker container.” Which is not a correct representation of the current container ecosystem. Docker produces OCI container images, which can be used with other compatible runtimes. Kubernetes is one example, while Podman is another.
Podman and Docker have overlapping core functionality. Both produce images that the other can use to run containers. The two runtimes then add their own specialisms on top of the base containerization features.
The Podman approach is simple that is to directly interact with the image registry, with the container and image storage, and with the Linux kernel through the runC container runtime process (not a daemon).
How to Install Podman?
If you’re using RedHat Linux, Podman’s in the extras repository after that you can use the subscription manager to add the repository. You’ll then be able to use yum to install Podman.
su -
subscription-manager repos --enable rhel-7-server-extras-beta-rpms
yum -y install podman
Most other popular Linux distributions also include Podman in their default repositories. You can use
apt install podman
,
OR
dnf install podman
to get it installed
Commands for Working with Containers and Images
Podman’s CLI is knowingly aligned with Docker’s. That means if you are familiar with Docker commands then there would not be any difficulty in using the Podman containers:
podman pull my-image:latest # To pull the image
podman run my-image:latest --name my-container # To run the image
podman ps # To list the podman processes
podman rm my-container # To remove the container
podman kill my-pod # Kill all containers
podman restart my-pod # Restart all containers
podman stop my-pod # Stop all containers
Docker vs Podman
If you are wondering how Podman is different from docker, the following table helps you with some key differences.
Podman | Docker |
---|---|
It is Daemonless | Docker has a daemon (containerd ). In addition, The docker CLI interacts with the daemon to manage containers. |
It interacts with the Linux kernel directly through runc | Docker daemon owns all the child processes of running containers |
It can deploy pods with multiple containers. The same pod manifest can be used in Kubernetes. Also, you can deploy a Kubernetes pod manifest as a Podman pod. | There is no concept of a pod in Docker |
Can run rootless containers without any additional configurations. You can run containers with root or non-privileged users. | Docker rootless mode requires additional configurations |
Conclusion
You might be using docker and looking for another tool around container management than just learn about podman.
Podman is an OCI-compliant container runtime that works without a daemon. The CLI implements all the core Docker commands. You can easily transition to Podman or use it alongside an existing Docker installation.