7.5. 将容器镜像优化为较小版本
您可以使用 bootc-base-imagectl rechunk 子命令将输入容器镜像优化到一个具有相同文件系统树的新镜像中,但分成可寻址的可重复生成的层,并带有预先计算的 SELinux 标签。
这提供了更好的网络效率(对于推送和拉取),因为在镜像构建过程中没有改变的层可以被重用,而不会导致传输。
rechunk 操作适用于由创建新镜像 FROM <rhel-bootc> 的默认模式生成的镜像,但在与仅输出单个大 tar 层的从头构建结合使用时特别有用。如果没有 rechunk ,对输入的每个更改(如内核更新)将导致一个包括 bootc 镜像的整个内容的新层。然后,必须推送此新层、由注册中心存储,并由客户端拉取。
bootc-base-imagectl 作为 bootc 镜像的一部分提供,旨在在容器内运行,但需要将主机 containers-storage 映射到要执行的容器。
先决条件
- 您有一个之前构建的基础镜像。
流程
运行以下命令来 rechunk 您的基础镜像。
$ sudo podman run --rm --privileged -v /var/lib/containers:/var/lib/containers \ registry.redhat.io/rhel10/rhel-bootc:latest \ /usr/libexec/bootc-base-imagectl rechunk \ quay.io/exampleos/rhel-bootc:single \ quay.io/exampleos/rhel-bootc:chunked