How to Install and Use Podman on CentOS 8
Podman is a free, open-source, and Linux native tool used to run, build, share and deploy applications using containers. It allows you to manage containers and images, volumes mounted into those containers. Podman is a daemonless containerization engine so it is rapidly gaining popularity amongst developers as a replacement for Docker.
This post will show you how to install and use Podman container management software on CentOS 8.
Prerequisites
- A server running CentOS 8.
- A root password is configured on the server.
Install Podman
First, you will need to install EPEL repo to your system. You can install it using the following command:
dnf install epel-release -y
After installing the EPEL repo, run the following command to install Podman:
dnf install podman -y
Once the Podman is installed, verify the installed version of Podman with the following command:
podman --version
You should see the following output:
podman version 3.0.2-dev
To get detailed information, run the following command:
podman info
You should see the following output:
host: arch: amd64 buildahVersion: 1.19.8 cgroupManager: systemd cgroupVersion: v1 conmon: package: conmon-2.0.26-3.module_el8.4.0+830+8027e1c4.x86_64 path: /usr/bin/conmon version: 'conmon version 2.0.26, commit: 9dea73702793340168deaa5a0d21ca5ce1fcb5d7' cpus: 2 distribution: distribution: '"centos"' version: "8" eventLogger: file hostname: centos8 idMappings: gidmap: null uidmap: null kernel: 4.18.0-193.6.3.el8_2.x86_64 linkmode: dynamic memFree: 479723520 memTotal: 4130037760 ociRuntime: name: runc package: runc-1.0.0-73.rc93.module_el8.4.0+830+8027e1c4.x86_64 path: /usr/bin/runc version: |- runc version spec: 1.0.2-dev go: go1.15.7 libseccomp: 2.4.1 os: linux
Find and Download Image with Podman
To find a Debian image, run the following command:
podman search debian
You should see all available Debian images in the following output:
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/library/debian Debian is a Linux distribution that's compos... 3894 [OK] docker.io docker.io/smartentry/debian debian with smartentry 6 [OK] docker.io docker.io/library/ubuntu Ubuntu is a Debian-based Linux operating sys... 12423 [OK] docker.io docker.io/samueldebruyn/debian-git a minimal docker container with debian and g... 22 [OK] docker.io docker.io/i386/debian Debian is a Linux distribution that's compos... 14 docker.io docker.io/jdub/debian-sources-resource Concourse CI resource to check for updated D... 0 [OK] docker.io docker.io/itscaro/debian-ssh debian:jessie 28 [OK] docker.io docker.io/eboraas/debian Debian base images, for all currently-availa... 8 [OK] docker.io docker.io/amd64/debian Debian is a Linux distribution that's compos... 6 docker.io docker.io/arm32v7/debian Debian is a Linux distribution that's compos... 72 docker.io docker.io/dockershelf/debian Repository for docker images of Debian. Test... 1 [OK] docker.io docker.io/ppc64le/debian Debian is a Linux distribution that's compos... 4 docker.io docker.io/arm64v8/debian Debian is a Linux distribution that's compos... 26 docker.io docker.io/spritsail/debian-builder A Docker image based on debian:slim ideal fo... 1 [OK] docker.io docker.io/arm32v5/debian Debian is a Linux distribution that's compos... 2 docker.io docker.io/vpgrp/debian Docker images of Debian. 2 docker.io docker.io/multiarch/debian-debootstrap multiarch ports of debian-debootstrap 13 docker.io docker.io/1and1internet/debian-9-nginx-php-7.2-wordpress-4 debian-9-nginx-php-7.2-wordpress-4 0 [OK] docker.io docker.io/mdoerges/debian-buster-nginx Debian Buster with Nginx 0 docker.io docker.io/fleshgrinder/debian Debian base images for production and multis... 0 [OK] docker.io docker.io/s390x/debian Debian is a Linux distribution that's compos... 2 docker.io docker.io/vicamo/debian Debian docker images for all versions/archit... 3 docker.io docker.io/konstruktoid/debian Debian base image 0 [OK] docker.io docker.io/casept/debian-amd64 A debian image built from scratch. Mostly fo... 0 docker.io docker.io/vergissberlin/debian-development Docker debian image to use for development, ... 6 [OK]
Next, download the Debian image using the following command:
podman pull debian
You should get the following output:
Resolved "debian" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf) Trying to pull docker.io/library/debian:latest... Getting image source signatures Copying blob 0bc3020d05f1 done Copying config 7a4951775d done Writing manifest to image destination Storing signatures 7a4951775d157843b47250a2a5cc7b561d2abe0b29ae6f19737a04635302eacf
Next, verify the downloaded image using the following command:
podman images
You should get the following output:
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/debian latest 7a4951775d15 33 hours ago 119 MB
Run a Container with Podman
You can now launch a container from the Debian image using the following command:
podman run -dit --name debian-container debian
You should get the following output:
5fb79d2ff9748be9474977852db989d4de489546526683e840c501249823a4bf
You can also verify the running container using the following command:
podman ps
You should see the following output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5fb79d2ff974 docker.io/library/debian:latest bash 29 seconds ago Up 28 seconds ago debian-container
To connect the running container, run the following command:
podman attach debian-container
Once you are connected, you should get the following output:
root@5fb79d2ff974:/#
You can also run any command inside the running container:
root@5fb79d2ff974:/# apt-get update
To exit from the Debian container, run the following command:
root@5fb79d2ff974:/# exit
To check log of the running container, run the following command:
podman logs -f debian-container
To stop the running container, run the following command:
podman stop debian-container
To remove the stopped container, run the following command:
podman rm debian-container
Manage Pods with Podman
In this section, we will show you how to manage pods using Podman.
To create a new pod named webserver, run the following command:
podman pod create --name webserver
You should get the following output:
9cc9b2bdcfe1b774129f2d5b50a4b52c746a0f8917780ae7f2c786fa7767cd19
To list all pods, run the following command:
podman pod list
You should get the following output:
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 9cc9b2bdcfe1 webserver Created 21 seconds ago 3a0c7750fed9 1
To check a running container inside your pod, run the following command:
podman ps -a --pod
You should get the following output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 3a0c7750fed9 registry.access.redhat.com/ubi8/pause:latest 38 seconds ago Created 9cc9b2bdcfe1-infra 9cc9b2bdcfe1 webserver
To add a new CentOS container to a pod, run the following command:
podman run -dt --pod webserver centos:latest top
You should get the following output:
Resolved "centos" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf) Trying to pull quay.io/centos/centos:latest... Getting image source signatures Copying blob 7a0437f04f83 done Copying config 300e315adb done Writing manifest to image destination Storing signatures fcd9a724097759c29330bd57e557eab9778b3d6736695ebf9afedfbd9c0db5e3
Now, verify the added container using the following command:
podman ps -a --pod
You should get the following output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 3a0c7750fed9 registry.access.redhat.com/ubi8/pause:latest About a minute ago Up 16 seconds ago 9cc9b2bdcfe1-infra 9cc9b2bdcfe1 webserver fcd9a7240977 quay.io/centos/centos:latest top 17 seconds ago Up 16 seconds ago recursing_goldwasser 9cc9b2bdcfe1 webserver
Conclusion
In the above guide, you learned how to install and use Podman to manage containers on CentOS 8. Podman is very similar to Docker and a great replacement to make your job easier.