选择合适的基础镜像
面对多种多样的容器基础镜像,为何推荐红帽通用基础镜像(UBI)?首要原因在于,红帽通用基础镜像中的所有代码均源自 红帽企业 Linux(RHEL)。为了阐述选择 UBI 的合理性,我们必须谈谈 RHEL 肩负的使命:
“红帽企业 Linux 是安全可靠的 Linux 创新源泉,助力您的工作负载迈向成功。”
既然容器基于 Linux,而 UBI 又源自 RHEL,那么 UBI 同样具备这些价值:
- 创新:企业始终致力于追求迅速而无阻碍的创新,通过简化运维流程、集中开发与管理,确保从数据中心到边缘的全方位一致性。
- 优化:基础架构复杂性往往会导致成本增加和效率降低。
- 保护:对于大多数企业而言,持续缓解混合云环境中的风险,包括构建、扩展和管理各类工作负载,可能是一项艰巨的挑战。
- 信任:对于企业而言,管理复杂的应用生命周期、确保工作负载的兼容性、及时应用安全补丁和实施合规性报告,是永无止境且充满挑战的任务。
容器提供了轻量级的 Linux 操作系统用户空间,其中包括操作系统附带的所有程序、库和依赖项。将应用放入容器中,可以剥离不必要的依赖项,但容器本身仍是一个操作系统,因此容器基础镜像的质量与主机操作系统的质量一样重要。为企业选择合适的容器基础镜像是一项至关重要的决策,这一选择如同构建 标准操作环境(SOE)一样,会对安全性和生命周期产生影响。
红帽很早就意识到了基础镜像对企业的重要性,并在 RHEL 7 发布的同时开始提供 红帽企业 Linux(RHEL)镜像 (此后不久也发布了 RHEL 6 镜像)。这些镜像为 RHEL 客户提供了更加安全、性能更高且最新的企业级容器。在 RHEL 容器主机上运行 RHEL 容器镜像,可以提供不同环境之间的兼容性和可移植性,而且保留了操作上的熟悉感。但有一个问题:受到 RHEL 订阅企业协议的限制,客户无法在企业外部轻松共享他们构建的容器镜像,而这恰恰是容器的一个重要优势。
随着红帽通用基础镜像(UBI)的发布,两大方面发生了改变:
- 客户可以将他们在 UBI 上构建的容器镜像共享给企业内部或外部的任何人
- 非客户也可利用红帽通用基础镜像中发布的所有内容
现在,人人都可利用官方红帽容器镜像的可靠性、安全性和性能。这意味着,您可以在 UBI 上构建容器化应用,将其推送到您选择的任何容器 仓库服务器 ,然后与全世界共享。有了 UBI,您可以随时随地构建、共享和协同处理容器化应用。

在 UBI 上构建应用后,您可以自由地在任何地方共享和运行这些应用。不过,如果您在 RHEL 或 红帽 OpenShift上运行这些应用,还能进一步释放额外的价值。具体如下:
- 在任何位置运行:您可以获得相同质量的代码,但您只能获得社区支持和自助支持。
- 在 RHEL 或 OpenShift 上运行:您可以获得相同质量的代码,但可以享受红帽提供的全方位支持。如需任何帮助,您只需提交支持工单即可。
选用 UBI 的理由
以下列举了一些需求,可以帮助您确定 UBI 是否适合您的企业:
- 我的 开发人员想要一个可以公开分发的高质量容器镜像
- 我的 运维 团队想要一个具有企业级生命周期的可支持基础镜像
- 我的 产品团队希望交付一个与红帽联合提供支持的 红帽认证容器
- 我的 客户希望在他们的红帽环境中获得企业级支持
- 我的 社区希望更自由地共享容器化应用,但仍然需要真正优质的容器镜像
如果您的企业满足上述任一或所有条件,请继续阅读!
不仅仅是基础镜像
UBI 并非一个完整的操作系统,而是涵盖了以下三个方面的内容:
- 一套四个基础镜像(ubi-micro、ubi-minimal、ubi standard、ubi-init)
- 一组语言运行时镜像(Node.js、Ruby、Python、PHP、Perl 等)
- 一组来自 YUM 存储库的相关软件包,满足常见的应用依赖项需求

所有 UBI 内容都是 RHEL 的子集。UBI 中的所有软件包均来自 RHEL 渠道,在 RHEL 或 OpenShift 上运行时,能够享受到与 RHEL 相同的支持服务:

为了提供对容器镜像的高质量支持,需要投入大量的工程努力、进行详尽的安全分析,并配置充足的资源。这不仅需要测试基础镜像,还需要测试它们在给定容器主机上的行为表现。
为了简化升级方面的挑战,红帽在工程技术和支持方面投入了大量精力,实现了 UBI 8 在 RHEL 9 主机上兼容运行,UBI 9 在 RHEL 8 主机上兼容运行,并且支持其他各种排列组合。这为用户在升级容器镜像或底层容器主机中的应用时,提供了更大的灵活性和更强的信心。 如需受支持内容的完整列表,请参阅红帽门户中的 容器兼容性列表。
四种基础镜像对比

Micro - 专为包含自身依赖项(Python、Node.js、.NET 等)的应用而设计
- 可作为构建基础的绝对最小镜像
- 不含软件包管理器,因此更加小巧
- 建议使用 Buildah,而不是 Dockerfile
Minimal - 专为包含自身依赖项(Python、Node.js、.NET 等)的应用而设计
- 最小的预安装内容集合
- 不含 SUID 二进制文件
- 最小的软件包管理器(安装、更新和移除)
Standard - 适用于在 RHEL 上运行的任何应用
- 统一的 OpenSSL 加密堆栈
- 完整的 YUM 堆栈
- 包含实用的基本操作系统工具(tar、gzip、vi 等)
Multi-service - 使得在单个容器中运行多个服务更简单
- 已配置为在启动时运行 systemd
- 允许您在构建时启用相关服务
预构建了语言运行时容器镜像
除了基础镜像(可安装相关语言)外,UBI 还为开发人员提供了预构建镜像,可使用多种语言运行时。在许多情况下,开发人员只需使用一个镜像,即可开始处理所要构建的应用。
如需预构建运行时容器镜像的完整列表,请查看红帽生态系统目录:
相关的软件包
非常推荐使用预构建镜像。在发布新版本的 RHEL 或是针对关键通用漏洞披露(CVE)进行修补时,红帽会推出新的镜像,以反映 RHEL 的更新策略。 完整的镜像策略可在此处找到: 红帽容器镜像更新。我们精心设计了一系列镜像,您只需从中选择一个即可开始构建应用。

然而,在构建应用时,您可能会遇到需要额外软件包的情况。或者,您有时可能需要更新某个软件包才能使应用正常运行。为此,UBI 还附带了一组可通过 YUM 获取的 RPM,并在高可靠性的内容分发网络上分发这些软件包。当您处于必须执行生产发布的关键阶段,在 CI/CD 流程中运行 YUM 更新时,您将获得与我们客户所用一致的基础架构。
RHEL 是基石
早在 2014 年,容器化应用便在企业 IT 领域掀起了一股创新浪潮,持续引领着传统单体应用开发与维护的革新,堪称游戏规则的改变者。然而,容器并非万能钥匙。在企业领域,操作系统需要更稳定、更可靠的安全工具、指导和及时的修复。正是基于这些需求,RHEL应运而生。下方列出了几个负责基础镜像开发的红帽团队:
- 性能工程团队,负责更新和维护 glibc 和 OpenSSL 等基本库,以及 Python 和 Ruby 等语言运行时,目标是确保提供稳定且高效的性能,可靠地支持经过容器化的各种工作负载。
- 产品安全团队,致力于确保相同的库和语言及时获得安全修复,具体通过相关的 容器健康指数等级来衡量。
- 产品管理和工程团队,致力于添加新功能并推动长生命周期,旨在为您的投资奠定坚实的信心基础。
RHEL 采用订阅模式,这意味着您的企业无需为每个版本单独支付许可证费用,也不必额外承担除许可证费用之外的支持服务费用。订阅 RHEL 后,即可获得授权,可以运行任何当前版本的 RHEL。其中包括享受红帽的支持服务,获得一个更加安全、稳定且值得信赖的 Linux 操作系统。尽管 RHEL 是适用于容器的理想主机和镜像选择,但许多开发人员需要支持更广泛的用例,其中一些可能超出了 RHEL 本身支持的场景。这就是 UBI 的用武之地。
立足当下,面向未来
或许,您正在寻找一个基础镜像来开始构建简单的容器化应用。或者,您可能正计划从在容器引擎上运行的独立容器迁移到云原生世界,并且着手构建和认证专为在 OpenShift 上运行的 Operator。无论何种情况,我们相信 UBI 都能为您奠定坚实的基础。

容器采用新的打包格式来封装轻量级的操作系统用户空间,而红帽是企业级 Linux 操作系统的领导者。UBI 的设计满足了独立软件供应商(ISV)、客户及开源社区对企业级容器的需求,为容器开发领域树立了全新的行业标杆。
特别是,ISV 可以在单一且可信的基础上对容器化应用进行标准化,包括 Kubernetes Operator 在内。ISV 使用 UBI 后,可以借助 红帽容器认证服务,对在 OpenShift 等红帽平台上部署的软件进行持续验证。
在符合 OCI 标准的第三方平台上使用 UBI | +红帽平台 | +认证 | |
可信的路线图 | 是 | 是 | 是 |
可靠的基础 | 是 | 是 | 是 |
最精简的镜像 | 是 | 是 | 是 |
软件包更新 | 仅限 UBI 内容 | 所有 RHEL 内容 | 所有 RHEL 内容 |
云原生语言运行时 | 是 | 是 | 是 |
分发/再分发 | 是 | 是 | 是 |
红帽平台测试 | 是 | 是 | |
红帽客户支持 | 红帽组件 | 联合支持所有组件 | |
安全性扫描 | 是 | 是 | |
与红帽联合推广 | 是 | ||
容器构建服务 | 是 |
入门方法
入门很简单。您可以使用喜爱的任何容器引擎拉取这些镜像;如果喜欢使用命令行,红帽建议您使用 Podman Desktop 或 Podman。您只需从其中一个存储库中拉取镜像即可。
对于 UBI 9:
podman pull registry.access.redhat.com/ubi9/ubi
podman pull registry.access.redhat.com/ubi9/ubi-minimal
podman pull registry.access.redhat.com/ubi9/ubi-init
对于 UBI 8:
podman pull registry.access.redhat.com/ubi8/ubi
podman pull registry.access.redhat.com/ubi8/ubi-minimal
podman pull registry.access.redhat.com/ubi8/ubi-init
对于 UBI 7:
podman pull registry.access.redhat.com/ubi7/ubi
podman pull registry.access.redhat.com/ubi7/ubi-minimal
podman pull registry.access.redhat.com/ubi7/ubi-init
如需更多信息,请查阅完整的 《红帽通用基础镜像》电子书或 红帽通用基础镜像常见问题解答。
关于作者
At Red Hat, Scott McCarty is Senior Principal Product Manager for RHEL Server, arguably the largest open source software business in the world. Focus areas include cloud, containers, workload expansion, and automation. Working closely with customers, partners, engineering teams, sales, marketing, other product teams, and even in the community, he combines personal experience with customer and partner feedback to enhance and tailor strategic capabilities in Red Hat Enterprise Linux.
McCarty is a social media start-up veteran, an e-commerce old timer, and a weathered government research technologist, with experience across a variety of companies and organizations, from seven person startups to 20,000 employee technology companies. This has culminated in a unique perspective on open source software development, delivery, and maintenance.