SlideShare a Scribd company logo
Lessons Learned Adopting RHEL Container Tools
Podman, Buildah, Quay, Skopeo, Clair and S2I
Mihai Criveti, CTO & STSM, RHCA, IBM Elif Mosessohn-Samedin, RHCA II, Take off Labs
1
Agenda and Introduction
Use Case: Team Driven End-to-End Container Build
Podman, Skopeo and Buildah
Resources and Links
2
Agenda and Introduction
Overview
Adopting Podman for end-to-end container run and build.
Use cases:
• Understand the impact of SELinux, namespaces and cgroups.
• Move from docker-compose to Podman pods.
• Build container images for OpenShift Container Platform.
3
Speaker Overview
Mihai CRIVETI
Mihai builds containers for fun and profit, sometimes in the cloud, sometimes in his home datacenter, when
the weather is cold. He’s also a Red Hat Certified Architect and the CTO and Senior Technical Staff Member for
Cloud Native and Red Hat Solutions at IBM, where he builds multi-cloud solutions based on Red Hat
OpenShift.
Elif MOSESSOHN-SAMEDIN
DevOps (Automation) Engineer with experience in Infrastructure Optimization and Management. Red Hat
Certified Architect in Infrastructure and ITIL Certified in IT Service Management. Advocate for Continuous
Learning, Open Source Communities, and Technical Innovation.
4
Use Case: Team Driven
End-to-End Container Build
Breaking this up
• Elif is responsible for developing the secure base images and pushing them to a private registry.
• Mihai is responsible for building applications using the provided images.
5
Podman, Skopeo and Buildah
Podman Overview
What is Podman?
Figure 1: Podman - Manage pods, containers and OCI compliant container images
How is Podman different?
• Can be run as a regular user without requiring root.
• Can manage pods (groups of one or more containers that operate together).
• Lets you import Kubernetes definitions using podman play.
• Fork-exec model instead of client-server model (containers are child processes of podman).
• Compatible with Docker, Docker Hub or any OCI compliant container implementation.
6
Buildah
What is Buildah?
Figure 2: Buildah - Build container images from CLI or Dockerfiles
How is Buildah different?
• Containers can be build using simple CLI commands or shell scripts instead of Dockerfiles.
• Images can then be pushed to any container registry and can be used by any container engine, including
Podman, CRI-O, and Docker.
• Buildah is also often used to securely build containers while running inside of a locked down container by a
tool like Podman, OpenShift/Kubernetes or Docker.
7
Skopeo
What is Skopeo?
Figure 3: skopeo - inspect and copy containers and images between different storage
How does Skopeo help?
• It can copy images to and from a host, as well as to other container environments and registries.
• Skopeo can inspect images from container image registries, get images and image layers, and use
signatures to create and verify images.
8
Red Hat Image Sources Explained
Red Hat Software Collections Library (RHSCL)
• For developers that need the latest versions of tools not in the RHEL release schedule.
• Use the latest development tools without impacting RHEL.
• Available to all RHEL subscribers.
Red Hat Container Catalog (RHCC)
• Certified, curated and texted images built on RHEL.
• Images have gone through a QA process.
• Upgraded on a regular bases to avoid security vulnerabilities.
Quay.io
• Public / private container repository.
9
Universal Base Image - UBI
Red Hat Universal Base Image - UBI
Figure 4: UBI - Freely distributable OCI compliant secure container base images based on RHEL
How does UBI Help?
• More than just a base image, UBI provides three base images across RHEL 7 and RHEL 8: ubi, ubi-minimal
and ubi-init
• And a set of language runtimes (ex: nodejs, ruby, python, php, perl, etc.)
• All packages in UBI come from RHEL channels and are supported on RHEL and OpenShift.
• Secure by default, maintained and supported by Red Hat.
10
The Red Hat Container Catalog
Certified container images from Red Hat and 3rd party vendors
Figure 5: Container Images with a Container Health Index
Pulling a container image
podman pull registry.access.redhat.com/ubi8/python-38
11
Podman Compose
What is podman-compose?
• An implementation of docker-compose with Podman backend.
When and why use podman-compose?
• run unmodified docker-compose.yaml files, rootless
• no daemon or setup required
• Only depends on podman, Python 3 and PyYAML.
When NOT to use podman-compose?
• When you can use podman pod or podman generate and podman play‘ instead to create pods or import
Kubernetes definitions.
• For single-machine development, consider CodeReady Containers
• For multi-node clusters, check out Red Hat OpenShift, Kubernetes or OKD.
Getting podman-compose
• macOS
• Windows
12
Install Podman, Skopeo and Buildah
Fedora 33 / RHEL 8
# Install podman, buildah and skopeo on Fedora 33
sudo dnf -y install podman buildah skopeo slirp4netns fuse-overlayfs
Ubuntu / Debian
sudo apt update && sudo apt -y install podman buildah skopeo
Getting Help
podman version
podman --help # list available commands
man podman-ps # or commands like run, rm, rmi, image, build
podman info # display podman system information
https://podman.io/getting-started/installation
13
Rootless Containers and cgroup v2
Note that our regular user has UID 1000
uid=1000(cmihai) gid=1000(cmihai) groups=1000(cmihai)
What are UIDs mapped to inside the container?
podman unshare cat /proc/self/uid_map
0 1000 1
1 100000 65536
UID 0 is mapped my UID (1000). UID 1 is mapped to 100000, UID 2 would map to 100001, etc. That
means that a container UID of 27 would map to UID 1000026.
Let’s test this
mkdir test && podman unshare chown 27:27 test
ls -ld test
drwxrwxr-x. 2 100026 100026 4096 Sep 27 09:38 test
14
Resources and Links
Get this presentation
https://github.com/kubetalks/OpenShift-Commons-Lessons-Learned-Podman
15
Getting started with Podman
• https://podman.io/getting-started/
• https://github.com/containers/buildah
• https://github.com/containers/skopeo
• https://developers.redhat.com/products/rhel/ubi
• https://quay.io/
• https://www.katacoda.com/courses/containers-without-docker/running-containers-with-podman
• https://developers.redhat.com/products/codeready-containers/overview
16

More Related Content

PDF
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
PDF
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
PDF
OpenShift Virtualization - VM and OS Image Lifecycle
PDF
Mihai Criveti - PyCon Ireland - Automate Everything
PDF
Docker Meetup Rosenheim: Container Runtimes
PDF
Ansible Workshop for Pythonistas
PDF
Deploying Apache Kylin on AWS and designing a task scheduler for it
PDF
Red Hat OpenShift on Bare Metal and Containerized Storage
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
AnsibleFest 2021 - DevSecOps with Ansible, OpenShift Virtualization, Packer a...
OpenShift Virtualization - VM and OS Image Lifecycle
Mihai Criveti - PyCon Ireland - Automate Everything
Docker Meetup Rosenheim: Container Runtimes
Ansible Workshop for Pythonistas
Deploying Apache Kylin on AWS and designing a task scheduler for it
Red Hat OpenShift on Bare Metal and Containerized Storage

What's hot (20)

ODP
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
PPTX
Your journey into the serverless world
PDF
Kubernetes Architecture - beyond a black box - Part 1
PPTX
OpenShift Application Development | DO288 | Red Hat OpenShift
PDF
Open shift and docker - october,2014
PDF
OPENSHIFT CONTAINER PLATFORM CI/CD Build & Deploy
PDF
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
PDF
OpenShift and next generation application development
PDF
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
PDF
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
PDF
Developing Microservices Directly in AKS/Kubernetes
PDF
Docker Meetup - Melbourne 2015 - Kubernetes Deep Dive
PDF
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
PPTX
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
PPTX
DEVNET-1183 OpenShift + Kubernetes + Docker
PDF
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
PPTX
Galera on kubernetes_no_video
ODP
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
PDF
VM vs Docker-Based Pipelines
PDF
Kubernetes laravel and kubernetes
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...
Your journey into the serverless world
Kubernetes Architecture - beyond a black box - Part 1
OpenShift Application Development | DO288 | Red Hat OpenShift
Open shift and docker - october,2014
OPENSHIFT CONTAINER PLATFORM CI/CD Build & Deploy
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
OpenShift and next generation application development
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Using Docker Containers to Improve Reproducibility in Software and Web Engine...
Developing Microservices Directly in AKS/Kubernetes
Docker Meetup - Melbourne 2015 - Kubernetes Deep Dive
Build Your Own PaaS, Just like Red Hat's OpenShift from LinuxCon 2013 New Orl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
DEVNET-1183 OpenShift + Kubernetes + Docker
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Galera on kubernetes_no_video
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
VM vs Docker-Based Pipelines
Kubernetes laravel and kubernetes
Ad

Similar to OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Managing Containers (20)

PDF
Kubernetes Story - Day 1: Build and Manage Containers with Podman
PDF
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
PDF
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
PDF
Containers without docker | DevNation Tech Talk
PDF
Docker basic
PPTX
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
PPTX
docker : how to deploy Digital Experience in a container drinking a cup of co...
PPTX
.docker : how to deploy Digital Experience in a container drinking a cup of c...
PDF
Docking, loading, running domino on docker v12
PDF
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
PDF
Docker 101: An Introduction
PPTX
Docker, how to use it. organize a meeting with IBM products...
PDF
Lean Drupal Repositories with Composer and Drush
PDF
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
PDF
Dockerize All The Things
PDF
Linux Containers and Docker SHARE.ORG Seattle 2015
PDF
Devoxx 2016: A Developer's Guide to OCI and runC
PDF
DCEU 18: Building Your Development Pipeline
PDF
Ippevent : openshift Introduction
PDF
Developing and Deploying PHP with Docker
Kubernetes Story - Day 1: Build and Manage Containers with Podman
Kubernetes Story - Day 2: Quay.io Container Registry for Publishing, Building...
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Containers without docker | DevNation Tech Talk
Docker basic
.docker : How to deploy Digital Experience in a container, drinking a cup of ...
docker : how to deploy Digital Experience in a container drinking a cup of co...
.docker : how to deploy Digital Experience in a container drinking a cup of c...
Docking, loading, running domino on docker v12
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
Docker 101: An Introduction
Docker, how to use it. organize a meeting with IBM products...
Lean Drupal Repositories with Composer and Drush
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Dockerize All The Things
Linux Containers and Docker SHARE.ORG Seattle 2015
Devoxx 2016: A Developer's Guide to OCI and runC
DCEU 18: Building Your Development Pipeline
Ippevent : openshift Introduction
Developing and Deploying PHP with Docker
Ad

More from Mihai Criveti (7)

PDF
ContextForge MCP Gateway - the missing proxy for AI Agents and Tools
PDF
10 Limitations of Large Language Models and Mitigation Options
PDF
Retrieval Augmented Generation in Practice: Scalable GenAI platforms with k8s...
PDF
Data Science at Scale - The DevOps Approach
PDF
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
PDF
Kubernetes Story - Day 3: Deploying and Scaling Applications on OpenShift
PDF
Container Technologies and Transformational value
ContextForge MCP Gateway - the missing proxy for AI Agents and Tools
10 Limitations of Large Language Models and Mitigation Options
Retrieval Augmented Generation in Practice: Scalable GenAI platforms with k8s...
Data Science at Scale - The DevOps Approach
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
Kubernetes Story - Day 3: Deploying and Scaling Applications on OpenShift
Container Technologies and Transformational value

Recently uploaded (20)

PDF
Time Tracking Features That Teams and Organizations Actually Need
PPTX
Custom Software Development Services.pptx.pptx
PPTX
Patient Appointment Booking in Odoo with online payment
PPTX
Introduction to Windows Operating System
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PDF
Website Design Services for Small Businesses.pdf
PPTX
Trending Python Topics for Data Visualization in 2025
PPTX
Cybersecurity: Protecting the Digital World
PDF
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
PDF
Types of Token_ From Utility to Security.pdf
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PPTX
Oracle Fusion HCM Cloud Demo for Beginners
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
Complete Guide to Website Development in Malaysia for SMEs
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Time Tracking Features That Teams and Organizations Actually Need
Custom Software Development Services.pptx.pptx
Patient Appointment Booking in Odoo with online payment
Introduction to Windows Operating System
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
Website Design Services for Small Businesses.pdf
Trending Python Topics for Data Visualization in 2025
Cybersecurity: Protecting the Digital World
DuckDuckGo Private Browser Premium APK for Android Crack Latest 2025
Types of Token_ From Utility to Security.pdf
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Why Generative AI is the Future of Content, Code & Creativity?
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Oracle Fusion HCM Cloud Demo for Beginners
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Complete Guide to Website Development in Malaysia for SMEs
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM

OpenShift Commons - Adopting Podman, Skopeo and Buildah for Building and Managing Containers

  • 1. Lessons Learned Adopting RHEL Container Tools Podman, Buildah, Quay, Skopeo, Clair and S2I Mihai Criveti, CTO & STSM, RHCA, IBM Elif Mosessohn-Samedin, RHCA II, Take off Labs 1
  • 2. Agenda and Introduction Use Case: Team Driven End-to-End Container Build Podman, Skopeo and Buildah Resources and Links 2
  • 4. Overview Adopting Podman for end-to-end container run and build. Use cases: • Understand the impact of SELinux, namespaces and cgroups. • Move from docker-compose to Podman pods. • Build container images for OpenShift Container Platform. 3
  • 5. Speaker Overview Mihai CRIVETI Mihai builds containers for fun and profit, sometimes in the cloud, sometimes in his home datacenter, when the weather is cold. He’s also a Red Hat Certified Architect and the CTO and Senior Technical Staff Member for Cloud Native and Red Hat Solutions at IBM, where he builds multi-cloud solutions based on Red Hat OpenShift. Elif MOSESSOHN-SAMEDIN DevOps (Automation) Engineer with experience in Infrastructure Optimization and Management. Red Hat Certified Architect in Infrastructure and ITIL Certified in IT Service Management. Advocate for Continuous Learning, Open Source Communities, and Technical Innovation. 4
  • 6. Use Case: Team Driven End-to-End Container Build
  • 7. Breaking this up • Elif is responsible for developing the secure base images and pushing them to a private registry. • Mihai is responsible for building applications using the provided images. 5
  • 9. Podman Overview What is Podman? Figure 1: Podman - Manage pods, containers and OCI compliant container images How is Podman different? • Can be run as a regular user without requiring root. • Can manage pods (groups of one or more containers that operate together). • Lets you import Kubernetes definitions using podman play. • Fork-exec model instead of client-server model (containers are child processes of podman). • Compatible with Docker, Docker Hub or any OCI compliant container implementation. 6
  • 10. Buildah What is Buildah? Figure 2: Buildah - Build container images from CLI or Dockerfiles How is Buildah different? • Containers can be build using simple CLI commands or shell scripts instead of Dockerfiles. • Images can then be pushed to any container registry and can be used by any container engine, including Podman, CRI-O, and Docker. • Buildah is also often used to securely build containers while running inside of a locked down container by a tool like Podman, OpenShift/Kubernetes or Docker. 7
  • 11. Skopeo What is Skopeo? Figure 3: skopeo - inspect and copy containers and images between different storage How does Skopeo help? • It can copy images to and from a host, as well as to other container environments and registries. • Skopeo can inspect images from container image registries, get images and image layers, and use signatures to create and verify images. 8
  • 12. Red Hat Image Sources Explained Red Hat Software Collections Library (RHSCL) • For developers that need the latest versions of tools not in the RHEL release schedule. • Use the latest development tools without impacting RHEL. • Available to all RHEL subscribers. Red Hat Container Catalog (RHCC) • Certified, curated and texted images built on RHEL. • Images have gone through a QA process. • Upgraded on a regular bases to avoid security vulnerabilities. Quay.io • Public / private container repository. 9
  • 13. Universal Base Image - UBI Red Hat Universal Base Image - UBI Figure 4: UBI - Freely distributable OCI compliant secure container base images based on RHEL How does UBI Help? • More than just a base image, UBI provides three base images across RHEL 7 and RHEL 8: ubi, ubi-minimal and ubi-init • And a set of language runtimes (ex: nodejs, ruby, python, php, perl, etc.) • All packages in UBI come from RHEL channels and are supported on RHEL and OpenShift. • Secure by default, maintained and supported by Red Hat. 10
  • 14. The Red Hat Container Catalog Certified container images from Red Hat and 3rd party vendors Figure 5: Container Images with a Container Health Index Pulling a container image podman pull registry.access.redhat.com/ubi8/python-38 11
  • 15. Podman Compose What is podman-compose? • An implementation of docker-compose with Podman backend. When and why use podman-compose? • run unmodified docker-compose.yaml files, rootless • no daemon or setup required • Only depends on podman, Python 3 and PyYAML. When NOT to use podman-compose? • When you can use podman pod or podman generate and podman play‘ instead to create pods or import Kubernetes definitions. • For single-machine development, consider CodeReady Containers • For multi-node clusters, check out Red Hat OpenShift, Kubernetes or OKD. Getting podman-compose • macOS • Windows 12
  • 16. Install Podman, Skopeo and Buildah Fedora 33 / RHEL 8 # Install podman, buildah and skopeo on Fedora 33 sudo dnf -y install podman buildah skopeo slirp4netns fuse-overlayfs Ubuntu / Debian sudo apt update && sudo apt -y install podman buildah skopeo Getting Help podman version podman --help # list available commands man podman-ps # or commands like run, rm, rmi, image, build podman info # display podman system information https://podman.io/getting-started/installation 13
  • 17. Rootless Containers and cgroup v2 Note that our regular user has UID 1000 uid=1000(cmihai) gid=1000(cmihai) groups=1000(cmihai) What are UIDs mapped to inside the container? podman unshare cat /proc/self/uid_map 0 1000 1 1 100000 65536 UID 0 is mapped my UID (1000). UID 1 is mapped to 100000, UID 2 would map to 100001, etc. That means that a container UID of 27 would map to UID 1000026. Let’s test this mkdir test && podman unshare chown 27:27 test ls -ld test drwxrwxr-x. 2 100026 100026 4096 Sep 27 09:38 test 14
  • 20. Getting started with Podman • https://podman.io/getting-started/ • https://github.com/containers/buildah • https://github.com/containers/skopeo • https://developers.redhat.com/products/rhel/ubi • https://quay.io/ • https://www.katacoda.com/courses/containers-without-docker/running-containers-with-podman • https://developers.redhat.com/products/codeready-containers/overview 16