9.4. 构建镜像并将容器提取到镜像中
创建容器镜像后,您可以构建自定义镜像并将容器镜像提取到其中。为此,您必须在蓝图中指定 容器自定义,以及最终镜像的 容器名称。在构建过程中,会获取容器镜像,并放置在本地 Podman 容器存储中。
前提条件
-
您创建了容器镜像并将其推送到本地
quay.io
容器 registry 实例。请参阅 将容器工件直接推送到容器注册中心。 - 您可以访问 registry.access.redhat.com。
-
您有一个容器
清单 ID
。 -
已安装
qemu-kvm
和qemu-img
软件包。
流程
创建蓝图来构建
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
推送蓝图:
# composer-cli blueprints push blueprint-image.toml
构建容器镜像:
# composer-cli start compose image qcow2
- image 是蓝图名称。
qcow2
是镜像类型。注意构建镜像需要一些时间,因为它将检查
quay.io
registry 上的容器。
检查 Compose 的状态:
# composer-cli compose status
完成的 compose 显示 FINISHED 状态值。要识别列表中您的 compose,请使用其 UUID。
compose 过程完成后,将生成的镜像文件下载到默认的下载位置:
# composer-cli compose image UUID
使用前面步骤中显示的 UUID 值替换 UUID。
您可以使用您创建和下载的
qcow2
镜像来创建虚拟机。
验证
在您下载的结果 qcow2
镜像中执行以下步骤:
-
在虚拟机中启动
qcow2
镜像。请参阅从 KVM 客户机镜像创建虚拟机。 qemu
向导将打开。登录到qcow2
镜像。-
输入用户名和密码。这些可以是您在 "customizations.user" 部分的
.qcow2
蓝图中设置的用户名和密码,或是在引导时使用cloud-init
创建的。
-
输入用户名和密码。这些可以是您在 "customizations.user" 部分的
运行容器镜像,并在容器内打开 shell 提示符:
# podman run -it registry.access.redhat.com/ubi9:8080/osbuild/repository /bin/bash/
registry.access.redhat.com
是目标 registry,osbuild
是机构,repository
则是在完成构建时推送容器的位置。检查您添加到蓝图中的软件包是否可用:
# type -a nginx
输出显示
nginx
软件包路径。