2. Using the Fast and Stable Streams
2. Using the Fast and Stable Streams ๊ด๋ จ
As mentioned in the previous step, there are two main types of streams. To view them, run the following command:
yum module list | grep container-tools
# container-tools rhel8 [d] common [d] Most recent (rolling) versions of podman, buildah, skopeo, runc, conmon, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and updated as frequently as every 12 weeks.
# container-tools 1.0 common [d] Stable versions of podman 1.0, buildah 1.5, skopeo 0.1, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and supported for 24 months.
# container-tools 2.0 common [d] Stable versions of podman 1.6, buildah 1.11, skopeo 0.1, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.
# container-tools 3.0 common [d] Stable versions of podman 3.0, buildah 1.19, skopeo 1.2, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.
# container-tools 4.0 common [d] Stable versions of podman 4.0, buildah 1.24, skopeo 1.6, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.
Notice there are two types:
container-tools:rhel8
- this is the fast moving stream, it's updated once every 12 weeks and generally fixes bugs by rolling to new versionscontainer-tools:1.0
- this was released with RHEL 8.0 and supported for 24 months, and receives bug fixes with back ports that keep the API and CLI interfaces stablecontainer-tools:2.0
- this was released with RHEL 8.2 and supported for 24 months, and receives bug fixes with back ports that keep the API and CLI interfaces stable
Now, let's pretend we are developer looking for access to the latest features in RHEL. Let's inspect the description of the fast moving stream. Notice that there are multiple versions of the rhel8 application stream. Every time a package is updated the entire group of packages is version controlled and tested together:
yum module info container-tools:rhel8
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8050020220120091659
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8060020220401155929
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8060020220426163604
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8060020220711143429
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8060020221012172321
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8060020221020065705
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8070020220929222448
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8070020221026183352
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8070020221215192736
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 8070020230113130632
# Context
# ... ์๋ต ...
#
# Name : container-tools
# Stream : rhel8 [d][a]
# Version : 820190211172150
# Context : 20125149
# Architecture : x86_64
# Profiles : common [d]
# Default profiles : common
# Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
# Summary : Common tools and dependencies for container runtimes
# Description : Contains SELinux policies, binaries and other dependencies for use with container runtimes
# Requires : platform:[el8]
# Artifacts : buildah-0:1.5-3.gite94b4f9.module+el8+2769+577ad176.x86_64
# : container-selinux-2:2.75-1.git99e2cfd.module+el8+2769+577ad176.noarch
# : containernetworking-plugins-0:0.7.4-3.git9ebe139.module+el8+2769+577ad176.x86_64
# : containers-common-1:0.1.32-3.git1715c90.module+el8+2769+577ad176.x86_64
# : fuse-overlayfs-0:0.3-2.module+el8+2769+577ad176.x86_64
# : oci-systemd-hook-1:0.1.15-2.git2d0b8a3.module+el8+2769+577ad176.x86_64
# : oci-umount-2:2.3.4-2.git87f9237.module+el8+2769+577ad176.x86_64
# : podman-0:1.0.0-2.git921f98f.module+el8+2785+ff8a053f.x86_64
# : podman-docker-0:1.0.0-2.git921f98f.module+el8+2785+ff8a053f.noarch
# : runc-0:1.0.0-54.rc5.dev.git2abd837.module+el8+2769+577ad176.x86_64
# : skopeo-1:0.1.32-3.git1715c90.module+el8+2769+577ad176.x86_64
# : slirp4netns-0:0.1-2.dev.gitc4e1bc5.module+el8+2769+577ad176.x86_64
#
# Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
Now, let's install the fast moving container-tools:rhel8 Application Stream like this:
yum module install -y container-tools:rhel8
We should have a whole set of tools installed:
yum module list --installed
# Last metadata expiration check: 0:31:50 ago on Tue 08 Aug 2023 12:37:52 AM UTC.
# Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs)
# Name Stream Profiles Summary
# container-tools rhel8 [d][e] common [ Most recent (rolling) versions of podman, buildah, skopeo, runc, conmon, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built
# d] [i] and tested together, and updated as frequently as every 12 weeks.
#
# Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Look at the packages that were installed as part of this Application Stream:
yum module repoquery --installed container-tools
# Last metadata expiration check: 0:33:21 ago on Tue 08 Aug 2023 12:37:52 AM UTC.
# aardvark-dns-2:1.1.0-5.module+el8.7.0+17824+66a0202b.x86_64
# buildah-1:1.27.3-1.module+el8.7.0+17824+66a0202b.x86_64
# cockpit-podman-53-1.module+el8.7.0+17824+66a0202b.noarch
# conmon-3:2.1.4-1.module+el8.7.0+17824+66a0202b.x86_64
# container-selinux-2:2.189.0-1.module+el8.7.0+17824+66a0202b.noarch
# containernetworking-plugins-1:1.1.1-3.module+el8.7.0+17824+66a0202b.x86_64
# containers-common-2:1-46.module+el8.7.0+17824+66a0202b.x86_64
# criu-3.15-3.module+el8.7.0+17824+66a0202b.x86_64
# crun-1.5-1.module+el8.7.0+17824+66a0202b.x86_64
# fuse-overlayfs-1.9-1.module+el8.7.0+17824+66a0202b.x86_64
# libslirp-4.4.0-1.module+el8.7.0+17824+66a0202b.x86_64
# netavark-2:1.1.0-7.module+el8.7.0+17824+66a0202b.x86_64
# podman-3:4.2.0-8.module+el8.7.0+17824+66a0202b.x86_64
# podman-catatonit-3:4.2.0-8.module+el8.7.0+17824+66a0202b.x86_64
# python3-podman-4.2.1-1.module+el8.7.0+17824+66a0202b.noarch
# runc-1:1.1.4-1.module+el8.7.0+17824+66a0202b.x86_64
# skopeo-2:1.9.4-0.1.module+el8.7.0+17824+66a0202b.x86_64
# slirp4netns-1.2.0-2.module+el8.7.0+17824+66a0202b.x86_64
# toolbox-0.0.99.3-0.6.module+el8.7.0+17824+66a0202b.x86_64
# udica-0.2.6-10.module+el8.7.0+17824+66a0202b.noarch
Look at the version of Podman that was installed. It should be fairly new, probably within a few months of what's latest upstream:
podman -v
# podman version 4.2.0
Let's clean up the environment, and start from scratch:
yum module remove -y container-tools
yum module reset -y container-tools
OK, now let's pretend we are a systems administrator or SRE that wants a set of stable tools which are supported for 24 months. First, inspect the stable stream that was released in RHEL 8.0. Notice that there are several versions of this Application Stream. Every time a package is updated a new stream version is generated to snapshot the exact versions of each package together as a stream:
yum module info container-tools:1.0
Now, install it:
yum module install -y --allowerasing container-tools:1.0
Check the version of Podman again:
podman -v
# podman version 1.0.2-dev
Notice that it's an older version of Podman. This version only gets back ports and will never move beyond Podman 1.0.2. Note, there is no connection between the container-tools version number and the Podman version number. It is purely coincidence that these numbers coincide. The container-tools version number is an arbitrary number representing all of the tools tested together in the Application Stream. This includes, Podman, Buildah, Skopeo, CRIU, etc.
Now, let's go back to the latest version of the container-tools for the rest of this module:
yum module remove -y container-tools
yum module reset -y container-tools
yum module install -y container-tools:rhel8
Notice how easy it was to move between the stable streams and the fast moving stream. This is the power of modularity. Now, let's move on to using the actual tools.