Red Hat Training

A Red Hat training course is available for RHEL 8

10.4. 构建镜像并将容器提取到镜像中

创建容器镜像后,您可以构建自定义镜像并将容器镜像提取到其中。为此,您必须在蓝图中指定 容器自定义,以及最终镜像的 容器名称。在构建过程中,会获取容器镜像,并放置在本地 Podman 容器存储中。

先决条件

流程

  1. 创建蓝图来构建 qcow2 镜像。蓝图必须包含 自定义。

    name = "image"
    description = "A qcow2 image with a container"
    version = "0.0.1"
    distro = "rhel-90"
    
    [[packages]]
    name = "podman"
    version = "*"
    
    [[containers]]
    source = "registry.access.redhat.com/ubi9:8080/osbuild/container/container-image@sha256:manifest-ID-from-Repository-tag: tag-version"
    name =  "source-name"
    tls-verify = true
  2. 推送蓝图:

    # composer-cli blueprints push blueprint-image.toml
  3. 构建容器镜像:

    # composer-cli start compose image qcow2
    • image 是蓝图名称。
    • qcow2 是镜像类型。

      注意

      构建镜像需要一些时间,因为它将检查 quay.io registry 上的容器。

  4. 检查 Compose 的状态:

    # composer-cli compose status

    完成的 compose 显示 FINISHED 状态值。要识别列表中您的 compose,请使用其 UUID。

  5. compose 进程完成后,将生成的镜像文件下载到您默认的下载位置:

    # composer-cli compose image UUID

    使用前面步骤中显示的 UUID 值来替换 UUID。

    您可以使用您创建并下载的 qcow2 镜像来创建虚拟机。

验证

从下载的 qcow2 镜像执行以下步骤:

  1. 在虚拟机中启动 qcow2 镜像。请参阅从 KVM 客户机镜像创建虚拟机
  2. qemu 向导将打开。登录到 qcow2 镜像。

    1. 输入用户名和密码。这些可以是您在 "customizations.user" 部分的 .qcow2 蓝图中设置的用户名和密码,或是在引导时使用 cloud-init 创建的。
  3. 运行容器镜像,并在容器内打开 shell 提示符:

    # podman run -it registry.access.redhat.com/ubi9:8080/osbuild/repository /bin/bash/

    registry.access.redhat.com 是目标 registry,osbuild 是机构,repository 则是在完成构建时推送容器的位置。

  4. 检查您添加到蓝图中的软件包是否可用:

    # type -a nginx

    输出显示 nginx 软件包路径。