Custom images for Enterprise Linux that can be used with bootc. Currently supports:
- CentOS Stream 10 and 9: Published on GitHub Packages
- Alma Linux 10 and 9: Published on GitHub Packages
- Red Hat Enterprise Linux 10 and 9: See instructions
Images:
base: Includes some basic system toolstailscale: Includes Tailscale (built on top ofbase)k3s: Includes K3s (built on top ofbase)zfs: Includes ZFS as a kernel module (built on top ofbase)monitoring: Includes Grafana Alloy (built on top ofbase)monitoring-zfs: Includes Grafana Alloy (built on top ofzfs)
These images are built using GitHub Actions at least bi-weekly.
Images are published on GitHub Packages and available for linux/amd64 and linux/arm64 (except ZFS).
Includes:
- Utilities:
screen,pv,sqlite,jq,tmux,tree,rsync,yq
Image:
ghcr.io/italypaleale/bootc/centos-stream-10/base:latest
ghcr.io/italypaleale/bootc/centos-stream-9/base:latest
ghcr.io/italypaleale/bootc/alma-linux-10/base:latest
ghcr.io/italypaleale/bootc/alma-linux-9/base:latest
Includes:
- Everything in the
baseimage - Tailscale
Image:
ghcr.io/italypaleale/bootc/centos-stream-10/tailscale:latest
ghcr.io/italypaleale/bootc/centos-stream-9/tailscale:latest
ghcr.io/italypaleale/bootc/alma-linux-10/tailscale:latest
ghcr.io/italypaleale/bootc/alma-linux-9/tailscale:latest
Includes:
- Everything in the
baseimage - K3s, available as server or agent only
Image:
ghcr.io/italypaleale/bootc/centos-stream-10/k3s:latest
ghcr.io/italypaleale/bootc/centos-stream-9/k3s:latest
ghcr.io/italypaleale/bootc/alma-linux-10/k3s:latest
ghcr.io/italypaleale/bootc/alma-linux-9/k3s:latest
The image contains K3s pre-installed at the latest version, but it is not started automaticaly. K3s can be configured using the YAML config file format or by setting environmental variables.
- For a K3s server (which normally starts an agent too, unless configured otherwise):
- Configure K3s by editing the file
/etc/rancher/k3s/config/k3s-server.yaml - Optionally set environmental variables in the file
/etc/systemd/system/k3s-server.service.env - Enable and start the systemd unit with:
systemctl enable --now k3s-server
- Configure K3s by editing the file
- For a K3s agent only:
- Configure K3s by editing the file
/etc/rancher/k3s/config/k3s-agent.yaml - Optionally set environmental variables in the file
/etc/systemd/system/k3s-agent.service.env - Enable and start the systemd unit with:
systemctl enable --now k3s-agent
- Configure K3s by editing the file
Includes:
- Everything in the
baseimage - ZFS as a kernel module
Image:
ghcr.io/italypaleale/bootc/centos-stream-10/zfs:latest
ghcr.io/italypaleale/bootc/centos-stream-9/zfs:latest
ghcr.io/italypaleale/bootc/alma-linux-10/zfs:latest
ghcr.io/italypaleale/bootc/alma-linux-9/zfs:latest
Includes:
- Everything in the
baseimage - Grafana Alloy
- prometheus-podman-exporter
Image:
ghcr.io/italypaleale/bootc/centos-stream-10/monitoring:latest
ghcr.io/italypaleale/bootc/centos-stream-9/monitoring:latest
ghcr.io/italypaleale/bootc/alma-linux-10/monitoring:latest
ghcr.io/italypaleale/bootc/alma-linux-9/monitoring:latest
Includes:
- Everything in the
zfsimage - Grafana Alloy
- prometheus-podman-exporter
Image:
ghcr.io/italypaleale/bootc/centos-stream-10/monitoring-zfs:latest
ghcr.io/italypaleale/bootc/centos-stream-9/monitoring-zfs:latest
ghcr.io/italypaleale/bootc/alma-linux-10/monitoring-zfs:latest
ghcr.io/italypaleale/bootc/alma-linux-9/monitoring-zfs:latest
The repository contains a CLI tool in the tools directory, which can be used to build images. This is the same tool used in this repo's GitHub Actions.
To build images locally, you will need these tools installed:
- Go
- Podman 5+
- Although Docker can be used as well, Podman is strongly recommended
-
First, build the CLI tools:
mkdir -p .bin (cd tools; go build -v -o ../.bin/tools) -
(Optional) to update the versions of apps and base images, run the
update-versionscommand:.bin/tools update-versions --work-dir ./el10
-
Build an image. The command below is an example to build the base image, pushing it to Docker Hub at
docker.io/username/bootc/centos-stream-10/basewith the tag as the current date..bin/tools build \ base \ --default-base-image "centos-stream-10" \ --work-dir ./el10 \ --arch amd64,arm64 \ --repository "docker.io/username/bootc/centos-stream-10" \ --push \ --tag "$(date +"%Y%m%d")"
The Containerfiles are compatible with RHEL too, currently supporting RHEL 10 and 9. Due to licensing reasons, the RHEL-based images are not published from this repo automatically.
For building RHEL container images, the host OS must be running RHEL as well, or the container will not be able to connect to the Red Hat repositories.
To build images based on RHEL locally:
-
Make sure Podman is authenticated with the Red Hat Container Registry (use
podman login registry.redhat.io) and so is Docker (the credentials for the registry must be available in the file~/.docker/config.jsonfor theupdate-versionstool to work). You can create Token Based Registries instead of passwords. Full docs for registry authentication. -
Create the file
el10/config.override.yamlfile:baseImages: rhel-10: image: registry.redhat.io/rhel10/rhel-bootc tag: latest digest: ''
-
Run the
update-versionstool to fetch the latest digests:.bin/tools update-versions --config-file-name config.override.yaml --work-dir ./el10
-
Build the containers using
rhel-10as default base image. For example, to build the base image:.bin/tools build \ base \ --default-base-image "rhel-10" \ --work-dir ./el10 \ --arch amd64 \ --repository "docker.io/username/bootc/rhel10" \ --push \ --tag "$(date +"%Y%m%d")"