|
1 | 1 |
|
2 | 2 |
|
3 | | -### **A Curriculum for Mastering Bootable Containers with `bootc`** |
4 | | - |
5 | | - |
6 | | ------ |
7 | | - |
8 | | -### **Module 1: The Big Picture - Why Bootable Containers?** |
9 | | - |
10 | | -**Goal:** Understand the vision behind `bootc` and why image-based operating systems are a transformative approach to system management. |
11 | | - |
12 | | - * **1.1: The Vision from the Experts** |
13 | | - * **Video:** [Bootable Containers A deep dive into image based OS - Fedora Flock 2024 ](https://www.youtube.com/watch%3Fv%3Ds_t40323sE0) - A foundational talk by Dan Walsh (creator of SELinux & Podman). |
14 | | - * **Video:** [Keynote: Revolutionize your OS deploy and management with bootc containers - DevConf.CZ 2025](https://pretalx.devconf.info/devconf-cz-2025/talk/YT9CKK/) - A keynote presentation on the revolutionary potential of `bootc`. |
15 | | - * **1.2: Core Project & Foundational Concepts** |
16 | | - * [bootc-dev/bootc - GitHub](https://github.com/bootc-dev/bootc) - The official project repository. |
17 | | - * [Bootc Documentation](https://bootc-dev.github.io/bootc/) |
18 | | - * [Getting Started with Bootable Containers - Fedora Documentation](https://docs.fedoraproject.org/en-US/bootc/) - A maybe outdated guide explaining the core concepts. |
19 | | - * **1.3: The Future is Now: CNCF and Community** |
20 | | - * [Shape the Future of Linux: Contribute to bootc Open Source Project | Red Hat Developer](https://www.google.com/search?q=https://developers.redhat.com/articles/2024/06/11/shape-future-linux-contribute-bootc-open-source-project) - Discusses `bootc`'s acceptance into the CNCF Sandbox. |
21 | | - |
22 | | ------ |
23 | | - |
24 | | -### **Module 2: Under the Hood - How `bootc` Works** |
25 | | - |
26 | | -**Goal:** Gain a technical understanding of how a container image becomes a running, bootable operating system. |
27 | | - |
28 | | - * **2.1: The Installation Process** |
29 | | - * [Understanding `bootc-image-builder`](https://github.com/osbuild/bootc-image-builder) - Main tool for building Disk images from Bootc images. |
30 | | - * **2.2: The Bootc Filesystem** |
31 | | - * [Filesystem - `bootc`](https://docs.fedoraproject.org/en-US/bootc/filesystem/) - Explains the read-only `/usr` and persistent `/etc`/`/var` layout. |
32 | | - * **2.3: Provisioning and Advanced Use Cases** |
33 | | - * [System provisioning and `bootc`, now and the future :: DevConf.CZ 2025](https://www.youtube.com/watch?v=2OrumHcgdvk) - A talk by Colin Walters (maintainer of `bootc`) on provisioning. |
34 | | - * [How pre-tuned real-time bootable containers work | Red Hat Developer](https://developers.redhat.com/articles/2025/03/06/how-pre-tuned-real-time-bootable-containers-work) - A technical article on using `bootc` for real-time workloads. |
35 | | - |
36 | | ------ |
37 | | - |
38 | | -### **Module 3: Exploring the Ecosystem - What's Already Out There?** |
39 | | - |
40 | | -**Goal:** Discover the wide variety of pre-built `bootc` images available. |
41 | | - |
42 | | - * **3.1: The Foundational Base Images** |
43 | | - * **Fedora:** `quay.io/fedora/fedora-bootc:42` |
44 | | - * **CentOS Stream:** `quay.io/centos-bootc/centos-bootc:stream10` |
45 | | - * **AlmaLinux:** `quay.io/almalinuxorg/almalinux-bootc:10` |
46 | | - * **3.2: Community-Driven Desktop Images** |
47 | | - * **Universal Blue:** [Project Homepage](https://universal-blue.org/) |
48 | | - * **The Tuna-OS Family:** [tuna-os/tunaOS on GitHub](https://github.com/tuna-os/tunaOS) (Yellowfin, Albacore, Bluefin-tuna, Redfin). |
49 | | - * **Other Desktops:** AlmaLinux Atomic Desktops, HeliumOS. |
50 | | - * **3.3: Edge & Server Deployments** |
51 | | - * [RamaEdge/os-builder](https://github.com/RamaEdge/os-builder) - Example of `k3s` and `Microshift` baked into `bootc` images. |
52 | | - |
53 | | ------ |
54 | | - |
55 | | -### **Module 4: Let's Build\! - Creating Your Own Custom OS** |
56 | | - |
57 | | -**Goal:** Transition from a consumer to a creator. Build, customize, and manage your own bootable container image. |
58 | | - |
59 | | - * **4.1: The Starting Point for Desktops** |
60 | | - * [ublue-os/image-template](https://github.com/ublue-os/image-template) - The recommended template for creating your own customized desktop OS using GitHub Actions. |
61 | | - * **4.2: Best Practices for Building Images** |
62 | | - * [Building images - `bootc` Documentation](https://bootc-dev.github.io/bootc/building/guidance.html) - Official guidance on creating robust and maintainable images. |
63 | | - * [Best Practices for Building Bootable Containers](https://developers.redhat.com/articles/2025/02/26/best-practices-building-bootable-containers) |
64 | | - * **4.3: Self-Hosting a GitOps Pipeline** |
65 | | - * [Self-hosting `bootc` images for desktop and server](https://mrguitar.net/?p=2627) - An excellent guide on setting up your own GitOps pipeline to build and manage `bootc` images, giving you full control over your infrastructure. |
66 | | - * **4.4: For the Nix-heads: Integrating Your Development Workflow** |
67 | | - * [Managing Your Laptop with Bootable Containers, Fedora Toolbox, Nix, and Home Manager :: DevConf.CZ 2025](https://www.youtube.com/watch?v=P9XydScZZzs) - Explains how to combine an immutable OS with the flexibility of Nix for development. |
68 | | - |
69 | | ------ |
70 | | - |
71 | | -### **Module 5: Advanced Topics - Security & Automation** |
72 | | - |
73 | | -**Goal:** Secure your custom images by integrating modern security practices directly into your build pipeline. |
74 | | - |
75 | | - * **5.1: Generating a Software Bill of Materials (SBOM)** |
76 | | - * **Tool:** [Syft](https://github.com/anchore/syft) - For generating SBOMs from container images. |
77 | | - * **Reference:** Example `bootc` repo using Syft and Grype for SBOM and vulnerability scanning. |
78 | | - * **5.2: Automated Vulnerability Scanning** |
79 | | - * **Tool:** [Trivy](https://github.com/aquasecurity/trivy) - A comprehensive vulnerability scanner. |
80 | | - * **Reference:** [Trivy-scan Example GitHub Action](https://github.com/aquasecurity/trivy-action) for CI/CD integration. |
| 3 | +--- |
| 4 | + |
| 5 | +### **Intro** |
| 6 | + |
| 7 | +* [Flock 2024 Bootable Containers A deep dive into image based OS](https://www.youtube.com/watch?v=uNZuYBq5XfI) \- [Dan Walsh](https://www.redhat.com/en/authors/dan-walsh) (Father of SELinux/Podman) |
| 8 | +* [**bootc-dev/bootc: Boot and upgrade via container images \- GitHub**](https://github.com/bootc-dev/bootc) |
| 9 | + * The official project repository, a great place to start for a high-level overview of the project's goals, status, and community. |
| 10 | +* [**Getting Started with Bootable Containers \- Fedora Documentation**](https://docs.fedoraproject.org/en-US/bootc/getting-started/) |
| 11 | + * A foundational guide that explains the core concepts, benefits, and how to start using bootable containers. |
| 12 | + --- |
| 13 | + |
| 14 | + ### **How It Works** |
| 15 | + |
| 16 | +* [**Understanding bootc install**](https://bootc-dev.github.io/bootc//bootc-install.html) |
| 17 | + * A deep dive into the bootc install command, which is the core of how a container image becomes a bootable system. It explains the process of writing to disk and setting up the bootloader. |
| 18 | +* [**Filesystem \- bootc**](https://bootc-dev.github.io/bootc/filesystem.html) |
| 19 | + * Explains the immutable filesystem layout of a bootc system, with /usr being read-only and /etc and /var being used for persistent, mutable data. |
| 20 | +* [**How pre-tuned real-time bootable containers work | Red Hat Developer**](https://developers.redhat.com/articles/2025/03/06/how-pre-tuned-real-time-bootable-containers-work) |
| 21 | + * A technical article that provides an example of using bootc for real-time workloads, offering a peek into its internal mechanisms and customization. |
| 22 | +* |
| 23 | + |
| 24 | + --- |
| 25 | + |
| 26 | + ### **What about Nix?** |
| 27 | + |
| 28 | +* [Nix-Fedora-Toolbox](https://thrix.github.io/nix-toolbox/) |
| 29 | +* [Managing Your Laptop with Bootable Containers, Fedora Toolbox, Nix, and Home Manager :: DevConf.CZ 2025](https://pretalx.devconf.info/devconf-cz-2025/talk/G9JURJ/) |
| 30 | + |
| 31 | + --- |
| 32 | + |
| 33 | + ### **Deploying with Bootc on Bare Metal (in the cloud)** |
| 34 | + |
| 35 | +* [System provisioning and bootc, now and the future :: DevConf.CZ 2025](https://pretalx.devconf.info/devconf-cz-2025/talk/RKW3WM/) \- [Colin Walters](https://www.redhat.com/en/authors/colin-walters) (OPenshift/CoreOS, Maintainer of Bootc) |
| 36 | +* Great Example \- [https://github.com/RamaEdge/os-builder](https://github.com/RamaEdge/os-builder) |
| 37 | + * Ravi Chillerega \- k3s and Microshift baked in to bootc images for deployment to edge devices |
| 38 | +* [Keynote: Revolutionize your OS deploy and management with bootc containers :: DevConf.CZ 2025](https://pretalx.devconf.info/devconf-cz-2025/talk/YT9CKK/) |
| 39 | + |
| 40 | + --- |
| 41 | + |
| 42 | + ### **Desktop building with Bootc** |
| 43 | + |
| 44 | +* [ublue-os/image-template: Build your own custom Universal ... \- GitHub](https://github.com/ublue-os/image-template) |
| 45 | + * This is where you should start if you want to make your own desktop OS image |
| 46 | +* [Universal Blue – Powered by the future, delivered today](https://universal-blue.org/) |
| 47 | + * Universal Blue offers custom, immutable Atomic Desktop images, streamlining the creation and management of pre-configured OS environments using bootc for modern deployment. |
| 48 | +* [Red Hat / centos-stream / containers / bootc \- GitLab](https://gitlab.com/redhat/centos-stream/containers/bootc) \- CentOS Bootc Base images |
| 49 | + * quay.io/centos-bootc/centos-bootc:stream10 |
| 50 | +* [Fedora / bootc / Base Images \- GitLab](https://gitlab.com/fedora/bootc/base-images) \- Fedora Bootc Base Images |
| 51 | + * quay.io/fedora/fedora-bootc:42 |
| 52 | +* [AlmaLinux/bootc-images \- GitHub](https://github.com/AlmaLinux/bootc-images) \- Almalinux Bootc Base images |
| 53 | + * `quay.io/almalinuxorg/almalinux-bootc:10` |
| 54 | + * [AlmaLinux/atomic-desktop \- GitHub](https://github.com/AlmaLinux/atomic-desktop) \- KDE \+ GNOME base images |
| 55 | + * [AlmaLinux/atomic-workstation \- GitHub](https://github.com/AlmaLinux/atomic-workstation) \- More Opinionated GNOME workstation baes on AlmaLInux |
| 56 | +* [https://github.com/tuna-os/tunaOS](https://github.com/tuna-os/tunaOS) |
| 57 | + * Forks of [Bluefin LTS](https://github.com/ublue-os/bluefin-lts/releases) bringing most of the goodies to other base images |
| 58 | + * Yellowfin \- Almalinux 10 Kitten (synced with CentOS 10\) |
| 59 | + * Albacore \- Almalinux 10 (synced with RHEL/EL 10\) |
| 60 | + * Bluefin-tuna \- Fedora 42 (using newer, pure bootc, unlike Bluefin) |
| 61 | + * Redfin \- RHEL 10 |
| 62 | +* [HeliumOS](https://www.heliumos.org/) \- KDE CentOS-based desktop image |
| 63 | +* [EU-OS](https://eu-os.eu/) \- Community-led Proof-Of-Concept of a Public-use OS for EU |
| 64 | +* [ublue-os/aurora-lts: Aurora Helium \- GitHub](https://github.com/ublue-os/aurora-lts) \- CentOS companion to [ublue-os/aurora: The ultimate productivity workstation \- GitHub](https://github.com/ublue-os/aurora) **Needs maintainers\!\!** |
| 65 | + |
| 66 | + --- |
| 67 | + |
| 68 | + ### **Security** |
| 69 | + |
| 70 | + * Syft \- SBOM |
| 71 | + * [out of memory exception when scanning images (here: fedora-bootc …](https://github.com/anchore/syft/issues/3800) |
| 72 | + * [Syft SBOM in a GHA](https://github.com/ublue-os/bluefin-lts/blob/bce36a272851767cb805df8e73458b902f44f67c/.github/workflows/reusable-build-image.yml#L163) |
| 73 | + * [Example bootc repo using Syft and Grype](https://github.com/SNThrailkill/Bootc-Fedora) (SBOM and Vuln-scanning) |
| 74 | + * Trivy \- SARIF Vuln scan |
| 75 | + * [Trivy-scan Example](https://github.com/RamaEdge/os-builder/blob/main/.github/actions/trivy-scan/action.yml) |
| 76 | + |
| 77 | + --- |
| 78 | + |
| 79 | + ### **Future & Best Practices** |
| 80 | + |
| 81 | +* [**Shape the Future of Linux: Contribute to bootc Open Source Project | Red Hat Developer**](https://developers.redhat.com/blog/2025/07/23/shape-future-linux-contribute-bootc-open-source-project) |
| 82 | + * A recent blog post discussing bootc's acceptance into the **CNCF Sandbox**, its evolution, and the benefits of contributing to the project. |
| 83 | +* [**Building images \- bootc**](https://bootc-dev.github.io/bootc//building/guidance.html) |
| 84 | + * Provides guidance on best practices for building bootc\-compatible images, including how to handle configuration files and nested containers. It also discusses the project's vision for the future. |
| 85 | + * |
0 commit comments