跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    镜像模式 (Image Mode / bootc)

    RHEL Image Mode 是 Red Hat 在 RHEL 9.6 起 GA、并内置于 RHEL 10 的新一代系统交付方式:把整个操作系统(内核、软件包、配置)打包成一个 OCI 容器镜像,用容器工具链构建、分发和更新。核心组件是 bootc(bootable containers)。它没有更换系统底层——软件包、内核、systemd 都和传统 RHEL 相同,变的是交付方式。

    传统 RHEL 运维的痛点:

    • 应用进容器,系统本身却仍靠 RPM + Ansible 一层层配置,两套工件、两套流水线
    • 系统状态是”漂移”出来的,难以复现,回滚依赖备份
    • 开发、测试、生产环境不一致的排查成本高

    Image Mode 的回答:

    • 一个工件:应用和操作系统都在容器镜像里,用同一个 registry 分发
    • 不可变基座 + 声明更新:系统由镜像定义,更新 = 拉新镜像,天然可回滚
    • 熟悉的工具:构建用 Containerfile + Podman/Buildah,不需要学全新的 DSL
    概念说明
    rhel-bootcRed Hat 官方的可引导基础镜像(registry.redhat.io/rhel10/rhel-bootc)
    bootc安装/引导/更新镜像化系统的工具(host 端 bootc upgrade、bootc status)
    Containerfile与普通容器构建相同,但产出可引导镜像
    bootc-image-builder把 bootc 镜像转换成 ISO/qcow2/AMI 等安装介质的工具
    Containerfile:在基础镜像上叠加自定义配置
    # RHEL 的 bootc 基础镜像在 registry.redhat.io,需要先登录(订阅账号):
    # podman login registry.redhat.io
    # 没有 RHEL 订阅时,可用社区基础镜像,例如 quay.io/centos-bootc/centos-bootc:stream10
    FROM registry.redhat.io/rhel10/rhel-bootc:latest
    # 与普通镜像构建一致:装包、拷配置
    RUN dnf -y install nginx && dnf clean all
    COPY nginx.conf /etc/nginx/nginx.conf
    COPY app.conf /etc/sysctl.d/
    # 需要开机自启的服务用 systemd 单元方式声明
    RUN systemctl enable nginx.service
    Terminal window
    $ podman build -t quay.io/yourorg/rhel-custom:1.0 .
    $ podman push quay.io/yourorg/rhel-custom:1.0

    两条路线:

    • 安装到磁盘:bootc install to-disk 必须在目标镜像的容器里以 --privileged 运行(或先做成安装 ISO),不是在裸机宿主上直接执行——普通宿主上通常没有 bootc 命令。已经跑着 bootc 的系统则用 bootc switch 切到你的镜像。
    • 云/虚拟机镜像:用 osbuild 的 image-builder 生成 qcow2、AMI、ISO(旧的 bootc-image-builder 已被官方标记弃用)
    把镜像装到 /dev/sda(在镜像容器内执行,危险操作,先确认盘符)
    $ sudo podman run --rm --privileged --pid=host \
    -v /var/lib/containers/storage:/var/lib/containers/storage \
    -v /dev:/dev -v /run/udev:/run/udev \
    quay.io/yourorg/rhel-custom:1.0 bootc install to-disk /dev/sda
    生成 qcow2 云镜像(旧命令,仅作对照)
    # bootc-image-builder 已被官方弃用,新流程改用 osbuild 的 image-builder CLI;
    # 具体子命令与镜像 tag 随版本变化,按 osbuild / image-builder 官方文档执行。
    $ podman run \
    --rm -it --privileged \
    --volume ./output:/output \
    quay.io/centos-bootc/bootc-image-builder:latest \
    quay.io/yourorg/rhel-custom:1.0 --type qcow2

    在运行中的 bootc 系统上:

    检查并应用系统更新(拉取镜像新版本)
    $ sudo bootc upgrade
    $ sudo systemctl reboot
    # 出问题时回滚到上一个镜像
    $ sudo bootc rollback

    更新策略由 systemd timer 定期自动执行,等价于一个”由 git 驱动的 yum update”。

    维度传统 RHEL(RPM + Kickstart)Image Mode(bootc)
    系统定义包清单 + 配置管理工具一个容器镜像 tag
    更新dnf upgradebootc upgrade(拉镜像)
    回滚依赖快照/备份内置上一代系统回滚
    构建产物ISO + Ansible playbookOCI 镜像
    包级变更随时 dnf install改镜像重新发布(紧急时 host 上仍可 dnf)

    适合:

    • 大规模、标准化的服务器农场(边缘、云、CI runner)
    • 需要”系统版本 = 镜像 tag”审计模型的合规场景
    • 已有 GitOps/容器流水线,想把系统纳入同一条流水线

    暂不适合:

    • 单台、多变的实验机(包级操作更灵活)
    • 依赖大量第三方内核模块或装机后频繁变更硬件的场景(需验证)
    • 还没上容器工具链、纯手工运维的小环境——先用好 Image Builder 和 Kickstart 收益更直接