Take look at Podman, Red Hat’s daemon-less Docker Alternative
Podman is a new, open-source, container engine that works seamlessly with containers as well as pods. This project is different because it doesn’t actually depend on a daemon(like Docker), but instead launches containers and pods as child processes. Podman is the CLI tool for interacting with libpod, a library that allows other tools to manage pods and containers.
Key Features
Before diving into the tutorial, let’s look at the key features of Podman.
- Podman can be easily run as a normal user, without requiring a
setuid
binary. When run without root, containers use user namespaces to set root in the container to the user running Podman. - Supports multiple image formats including the OCI and Docker image formats.
- Support for multiple means to download images including trust & image verification.
- Container image management (managing image layers, overlay filesystems, etc).
- Full management of container lifecycle.
- Support for pods to manage groups of containers together.
- Resource isolation of containers and pods.
- Support for a Docker-compatible CLI interface through Podman.
- Signing and pushing images to various storage backends are not supported at this point. Do checkout Skopeo for these tasks.
- Container runtimes daemons for working with the Kubernetes CRI interface are not supported.
- No support for
docker-compose
but Podman allows the creation and execution of Pods from a Kubernetes YAML file.
Now that we have learned what Podman can do and what not, we will dive into a simple tutorial of running an Nginx container using Podman.
Running Nginx container using Podman.
I’m using Ubuntu 18.04 for this tutorial,libpod
the package is being worked on for inclusion in the default Debian/Ubuntu repos.
Meanwhile use the below command to install
. /etc/os-release sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/x${NAME}_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/x${NAME}_${VERSION_ID}/Release.key -O Release.key sudo apt-key add - < Release.key sudo apt-get update -qq sudo apt-get -qq -y install podman sudo mkdir -p /etc/containers echo -e "[registries.search]\nregistries = ['docker.io', 'quay.io']" | sudo tee /etc/containers/registries.conf
Let’s deploy a container that includes a webserver we can access. We’ll use the official NGINX image and deploy it with the below command.
podman run -d nginx:latest
Once the container is deployed, use ps
command to check what containers are running.
Now that containers are running, we can launch lynx a terminal-based web browser to access the Nginx application using the following command.
lynx <IP-Address>:80
Congrats! We have learned the basics of installing and using Podman.
Useful Resources :
- Documentation on the Podman API
- List of the Podman commands with links to their man pages
- Podman Troubleshooting Guide
- Release notes for recent Podman versions
- Kaniko Tutorial : Build container images without Docker Daemon
- Implementing secure containers using gVisor+Docker tutorial
- ULTIMATE GUIDE to Coursera Specializations That Will Make Your Career Better (Over 100+ Specializations covered)
- Google Cloud Courses Collection
Like this post? Don’t forget to share it!
Average Rating