第 6 章 可重复生成的容器构建简介
Red Hat Enterprise Linux (RHEL)现在支持使用红帽工具 Podman 和 Buildah 可重复生成的容器构建。当用户使用相同的输入构建它们时,这个新功能减少了镜像的更改,但在不同时间。当从一个镜像版本移到较新版本的该镜像时,镜像之间的更改可能会减少从 registry 中拉取的数据量。可重复生成的容器构建对于确保供应链安全性、促进可靠的软件部署以及促进有效的调试至关重要。
在以前的版本中,升级容器镜像的大小并提高了客户有关更新有效负载大小的信息,增加了与 tarball 创建相关的现有挑战和限制。在 Konflux 等系统中,每个 Git 提交都会生成新的 tarball,这需要整个镜像的完整重新下载。mtime 更改等因素意味着,即使用户安装相同的 RPM,存储要求也会加倍,尽管底层数据没有改变。这不仅会负担 registry 存储,还强制客户端拉取新层,即使没有更改也是如此。这种情况进一步加剧了 rhel-bootc 和 RHEL AI 等环境中的问题,从而加快更新速度。
6.1. 可重复生成的容器构建的好处 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
RHEL 容器可重复生成的构建会减少 registry 存储,创建较小的更新有效负载,并通过确保在源代码和构建环境没有改变时镜像层保持一致来实现更快的下载。这个过程可最大化层缓存的效率,防止冗余存储和传输相同的数据。可重复生成的容器构建的主要优点是:
- 减少 registry 存储 :当镜像被更新时,只会存储更改的层。可重复生成的构建通过防止非确定因素(timestamp、文件顺序、元数据)造成更改来确保来自同一源代码的相同镜像,从而避免了额外的存储。
- 高效和较小的更新有效负载:对于容器次要更新,如安全补丁,只需要下载更改的层,而不是整个镜像。可重复生成的构建还可确保只有受影响的层更改有源更新,这与小代码更改可更改多个层的非可重复构建不同。
- 快速下载:容器可重复生成的构建可以优化构建系统和最终用户,方法是通过高效的缓存实现更快的下载并减少网络流量。