How to install Podman on Ubuntu?. Podman (Pod Manager) is a tool used to create and maintain containers. It is part of the libpod library. The Red Hat team has been working on a set of tools for running containers without a daemon. Did you know you can’t run Docker containers without Docker Engine daemon?.

The following set of tools work together to power the use of Containers without an all-time running daemon process.
- Buildah to facilitate building of OCI images
- Skopeo for sharing/finding container images on Docker registries, the Atomic registry, private registries, local directories and local OCI-layout directories.
- Podman for running containers without need for daemon.
Buildah’s commands replicate all of the commands that are found in a Dockerfile. Buildah containers are just created to allow content to be added back to the container image.
How To Build OCI & Docker Container Images With Buildah
Podman gives you all the commands and functions required to maintain and modify OCI images, such as pulling
and tagging
. It also allows you create, run, and maintain
How to Install Podman on Ubuntu
The podman package is on a PPA repository which needs to be added prior to installation. Start a new terminal session on your Ubuntu machine and run commands below.
. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
Once the repository is added, proceed to install Podman.
sudo apt update
sudo apt -y install podman
After the installation, you can display information pertaining to the host, current storage stats, and build of podman.
$ podman info
podman info
host:
arch: amd64
buildahVersion: 1.14.9
cgroupVersion: v1
conmon:
package: 'conmon: /usr/libexec/podman/conmon'
path: /usr/libexec/podman/conmon
version: 'conmon version 2.0.16, commit: '
cpus: 2
distribution:
distribution: ubuntu
version: "20.04"
eventLogger: file
hostname: ceph-admin
idMappings:
gidmap: null
uidmap: null
kernel: 5.4.0-33-generic
memFree: 7047921664
memTotal: 8149680128
ociRuntime:
name: runc
package: 'runc: /usr/sbin/runc'
path: /usr/sbin/runc
version: 'runc version spec: 1.0.1-dev'
os: linux
rootless: false
slirp4netns:
executable: ""
package: ""
version: ""
swapFree: 0
swapTotal: 0
uptime: 1h 34m 54.9s (Approximately 0.04 days)
registries:
search:
- docker.io
- quay.io
store:
configFile: /etc/containers/storage.conf
containerStore:
number: 0
paused: 0
running: 0
stopped: 0
graphDriverName: overlay
graphOptions: {}
graphRoot: /var/lib/containers/storage
graphStatus:
Backing Filesystem: extfs
Native Overlay Diff: "true"
Supports d_type: "true"
Using metacopy: "false"
imageStore:
number: 0
runRoot: /var/run/containers/storage
volumePath: /var/lib/containers/storage/volumes
Test Podman installation on Ubuntu
Pull Alpine docker image.
$ podman pull alpine
Trying to pull docker.io/library/alpine…Getting image source signatures
Copying blob 8e402f1a9c57: 2.63 MiB / 2.63 MiB [=======================] 5s
Copying config 5cb3aa00f899: 1.48 KiB / 1.48 KiB [=====================] 0s
Writing manifest to image destination
Storing signatures
5cb3aa00f89934411ffba5c063a9bc98ace875d8f92e77d0029543d9f2ef4ad0
List Downloaded images
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/alpine latest 5cb3aa00f899 3 days ago 5.79 MB
docker.io/library/hello-world latest fce289e99eb9 2 months ago 5.62 kB
Podman’s local repository is in /var/lib/containers
Run container with command – command options similar to docker.
$ podman run -it --rm docker.io/library/alpine /bin/sh
/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.2-1-g592d872fb8 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.2-2-ge7dc3349a9 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9754 distinct packages available
/ # apk add vim
(1/5) Installing lua5.3-libs (5.3.5-r1)
(2/5) Installing ncurses-terminfo-base (6.1_p20190105-r0)
(3/5) Installing ncurses-terminfo (6.1_p20190105-r0)
(4/5) Installing ncurses-libs (6.1_p20190105-r0)
(5/5) Installing vim (8.1.0630-r0)
Executing busybox-1.29.3-r10.trigger
OK: 40 MiB in 19 packages
/ # exit
Show running containers.
$ podman ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1eb35f1b7de8 docker.io/library/alpine:latest /bin/sh 4 seconds ago Up 4 seconds ago pedantic_roentgen
ec9c5b12db46 docker.io/library/alpine:latest /bin/sh 5 minutes ago Up 5 minutes ago ecstatic_wiles
For more on usage, check: How To run Docker Containers using Podman and Libpod
To setup private registry, checkout:
Setup Docker Container Registry with Podman & Let’s Encrypt SSL
Conclusion
Podman seems to be a replacement for Docker and other container management tools which require a daemon to work. It is still fresh and in early development stages to tell a lot. In RHEL 8, the officially supported tools for managing Docker containers are Podman and Buildah.
Related guides:
How To Install Podman on Debian
How To Install Podman on Arch Linux / Manjaro
How To Install Podman on CentOS & Fedora
How to Install and use Packer on Ubuntu
How to Setup Docker Private Registry on Ubuntu
How to setup 3 node Kubernetes Cluster on Ubuntu 18.04 with Weave Net CNI