搜索

第 2 章 构建和测试 RHEL 可引导容器镜像

download PDF

以下流程使用 Podman 来构建和测试您的容器镜像。您也可以使用其他工具,如 OpenShift Container Platform。有关使用容器配置 RHEL 系统的更多信息,请参阅 rhel-bootc-examples 存储库。

重要

红帽将 rhel9/rhel-bootc 容器镜像作为技术预览提供。技术预览功能提供对未来产品创新的早期访问,使客户能够在开发过程中测试功能并提供反馈。但是,这些功能不被完全支持。技术预览功能的文档可能不完整,或者仅包含基本安装和配置信息。如需有关 技术预览功能支持范围 的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

图 2.1. 使用 Containerfile 中的指令构建镜像,测试容器,将镜像推送到 registry,并与其他人共享

639 RHEL Bootable Container Bifrost 0524 2

通用 Containerfile 结构如下:

FROM registry.redhat.io/rhel9/rhel-bootc:latest

RUN dnf -y install [software] [dependencies] && dnf clean all

ADD [application]
ADD [configuration files]

RUN [config scripts]

rhel-9-bootc 容器镜像重复利用 OCI 镜像格式。

  • rhel-9-bootc 容器镜像在安装到系统时会忽略容器配置部分(Config )。
  • 当使用容器运行时(如 podmandocker )运行此镜像时,rhel-9-bootc 容器镜像不会忽略容器配置部分(Config)。

例如,当 rhel-9-bootc 镜像安装到系统时,Containerfile 中的以下命令会被忽略:

  • ENTRYPOINTCMD (OCI: Entrypoint/Cmd):您可以设置 CMD /sbin/init
  • ENV (OCI: Env): 更改 systemd 配置以配置全局系统环境。
  • EXPOSE (OCI: exposePorts):它独立于系统防火墙和运行时网络功能。
  • USER (OCI: User):在 RHEL 可启动容器中配置各个服务,来以非特权用户身份运行。

可以在 ContainerfileDockerfile 中使用的命令一样。

注意

此发行版本不支持构建自定义 rhel-bootc 基础镜像。

2.1. 构建容器镜像

使用 podman build 命令,使用 Containerfile 中的指令构建镜像。

先决条件

  • container-tools 元数据包已安装。

流程

  1. 创建 Containerfile

    $ cat Containerfile
    FROM registry.redhat.io/rhel9/rhel-bootc:latest
    RUN dnf -y install cloud-init && \
        ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \
        dnf clean all

    这个 Containerfile 示例添加了 cloud-init 工具,因此它可以自动获取 SSH 密钥,并运行基础设施中的脚本,也可以从实例元数据中收集配置和 secret。例如,您可以将此容器镜像用于预生成的 AWS 或 KVM 客户机操作系统。

  2. 使用当前目录中的 Containerfile 构建 <image> 镜像:

    $ podman build -t quay.io/<namespace>/<image>:<tag>

验证

  • 列出所有镜像:

    $ podman images
    REPOSITORY                                  TAG      IMAGE ID       CREATED              SIZE
    localhost/<image>                           latest   b28cd00741b3   About a minute ago   2.1 GB
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.