Foundation layer for ODH (Open Data Hub) workbenches and runtimes. All images are CentOS Stream 9 (c9s) with Python 3.12.
RHOAI (Red Hat OpenShift AI) workbenches and runtimes use RHEL 9.6 EUS base images from AIPCC, not these c9s images.
This repository builds on Enterprise Linux 9 only. ODH base-images/ and ODH
workbench/runtime builds use CentOS Stream 9 (stream9, c9s) via
quay.io/opendatahub/odh-base-image-*-py312-c9s. RHOAI/Konflux builds use RHEL
9.6 EUS (AIPCC) via quay.io/aipcc/base-images/*-el9.6. The ubi9-python-*
directory names denote EL9 compatibility; they are not FROM ubi9 bases.
Accidental upgrades to stream10, ubi10, or rhel10 are out of scope until explicitly planned.
Pin OS FROM references with an explicit tag and digest — for example
quay.io/centos/centos:stream9@sha256:…. Digest-only refs (without a tag) let
Renovate/MintMaker follow the registry default tag, which can jump to stream10.
Tag bumps for quay.io/centos/centos are blocked by allowedVersions in
.github/renovate.json5; digest refreshes within
stream9 remain allowed.
| Directory | Purpose |
|---|---|
cpu/ |
CPU-only base image |
cuda/ |
NVIDIA CUDA (12.9, 13.0) |
rocm/ |
AMD ROCm (6.4, 7.1) |
build-args/ |
.conf files with INDEX_URL per variant |
utils/ |
Shared scripts: aipcc.sh, dnf-helper.sh, fix-permissions, pip.conf.in, uv.toml.in |
copr/ |
Tool to rebuild Fedora SRPMs for EL9 (README) |
Downstream Dockerfiles reference base images via build arg:
ARG BASE_IMAGE
FROM ${BASE_IMAGE}
Resolved at build time by Tekton / Konflux pipelines.
Base images are not in the Makefile -- they are built by Tekton/Konflux
pipelines only. To build locally, invoke podman build directly.
Build context is the repo root (Dockerfiles use COPY base-images/utils/...):
podman build \
--build-arg-file=base-images/build-args/cpu.conf \
-f base-images/cpu/c9s-python-3.12/Dockerfile.cpu .
Red Hat ships 2 out of every 3 CPython releases in AppStream, skipping the version released ~6 months before the next RHEL major (3.10 was skipped for RHEL 9, 3.13 for RHEL 10).
| RHEL | Default (full-life) | AppStream | Skipped |
|---|---|---|---|
| 9 | 3.9 | 3.11 (9.2, retires May 2026), 3.12 (9.4, retires Apr 2027) | 3.10 |
| 10 | 3.12 | 3.14 arriving via z-stream | 3.13 |
- Python 3.13 is EPEL-only, not in RHEL AppStream
- Python 3.14 is in CentOS Stream 9/10 and shipping to RHEL 9.8 / 10.2
This repo ships Python 3.12, aligned with both RHEL 9 AppStream (supported until Apr 2027) and RHEL 10 full-life. The next version to consider is 3.14 (3.13 was skipped). The AIPCC wheel builder already has CI for 3.14 (AIPCC-8168).
References:
The CUDA and ROCm Dockerfiles are adapted from upstream vendor references:
- CUDA: gitlab.com/nvidia/container-images/cuda (see
dist/<version>/ubi9/for base, runtime, and cudnn stages) - ROCm: github.com/ROCm/ROCm-docker and ROCm install docs
Steps:
- Copy an existing version directory (e.g.
cuda/12.9/->cuda/13.1/) - Update the Dockerfile stages from the upstream vendor Dockerfiles for the new SDK version
- Update
cuda-repos/repo files if needed (GPG keys, baseurls) - Create
build-args/<variant>.confwith the correctINDEX_URL - Add Tekton pipeline YAMLs in
.tekton/