如何正确选择 Rocky Linux Docker 镜像

在 DockerHub 上,Rocky Linux Docker 镜像有多种类型,包括 rockylinux/rockylinux:9rockylinux/rockylinux:9-minimalrockylinux/rockylinux:9-ubi-initrockylinux/rockylinux:9-ubi-micro。那么这些镜像之间有什么区别,我们在实际生产中又该如何选择呢?

Rocky Linux Docker 镜像采用了与 Red Hat 相同的镜像命名方式,其中:

  • UBI 代表通用基础镜像(Universal Base Image)。
  • Micro 代表微服务(Microservices)。
  • init 代表初始化(initialization),实际上支持多服务(Multi-service)。
  • minimal 代表最小化安装。
  • 没有后缀的镜像即为标准版本。

具体来说,这些镜像中安装的服务和组件有所不同。更详细的信息可以参阅以下资源:

通过理解这些差异,您可以根据需要选择最合适的镜像用于生产环境。

温馨提醒
目前 Rocky Linux 官方正在将 Dockerhub 镜像仓库地址由 docker.io/library/rockylinux 切换成 docker.io/rockylinux/rockylinux 这个,所以后续镜像建议直接从 docker.io/rockylinux/rockylinux 下载。

rockylinux:9

rockylinux/rockylinux:9 是一个通用基础镜像,其设计主要是提供一个通用的 Rocky Linux 基础环境,适合各种容器化应用。

特点

  1. 通用基础环境 :包含常用的系统库和工具,不是特别精简,也不是特别重,比如:rockylinux/rockylinux:9 镜像包括 dnf 等命令,但是 rockylinux/rockylinux:9-minimal 镜像中没有。
  2. 适用于大多数应用 :为大多数容器化应用提供一个良好的基础。
  3. 灵活性 :通过这个镜像,您可以根据需要安装其他软件包。

使用场景

  1. 通用应用环境 :适用于需要基础操作系统环境但不需要极简或完整服务环境的场景。
  2. 开发与测试 :适合作为开发和测试的基础镜像。

rockylinux:9-minimal

rockylinux/rockylinux:9-minimal 是一个更加精简的镜像,只包含基本的系统库和工具,比标准的 rockylinux/rockylinux:9 镜像更小。它的设计目标是提供一个最小化的基础环境,但相比于 rockylinux/rockylinux:9-ubi-micro 镜像,它依然包含了一些基础工具。

特点

  1. 更小的体积 :比标准基础镜像更小,但不像 rockylinux/rockylinux:9-ubi-micro 镜像那样极简。
  2. 包含基础工具 :包含一些基本的系统管理工具。
  3. 适用于轻量级应用 :适合基础需求的轻量级应用,而不需要特别完整的系统环境。

使用场景

  1. 精简应用环境 :适用于需要轻量化处理的应用场景,但相比 rockylinux/rockylinux:9-ubi-micro 需要更多系统库和工具。
  2. 单任务应用 :适合单一任务或轻量级的容器化应用。

rockylinux:9-ubi-init

rockylinux/rockylinux:9-ubi-init 镜像是一个包含系统初始化工具的基础镜像。它提供了一个更完整的操作系统环境,适合需要更丰富系统工具和初始化脚本的容器运行环境。

特点

  1. 完整的基础系统 :包含较多的系统库和工具,类似于一个精简版的完整操作系统。
  2. 支持系统服务 :可以运行 systemd,支持系统服务的启动和管理。
  3. 适合传统应用 :特别适用于需要完整系统环境的传统应用容器化。

使用场景

  1. 复杂应用环境 :适用于需要完整系统环境的应用部署环境。
  2. 开发和测试 :开发和测试需要模拟更完整的系统环境。
  3. 服务容器 :需要运行多个系统服务的环境。

rockylinux:9-ubi-micro

rockylinux/rockylinux:9-ubi-micro 镜像是一个极简的基础镜像,只有最基础的系统库和工具。它提供了一个最小化的运行时环境,适合纯粹的应用程序容器化。

特点

  1. 极简环境 :只包含最基本的系统库,大大减少镜像体积。
  2. 高效和快速 :由于镜像体积小,启动和运行速度更快。
  3. 安全性 :较少的系统组件降低了攻击面,提高了安全性。

使用场景

  1. 微服务架构 :适合微服务的容器化,每个容器只负责一个任务。
  2. 轻量级应用 :适用于轻量级或单一目的的容器化应用。
  3. 高安全需求 :减少不必要的组件,降低潜在的安全风险。

对比总结

  • rockylinux/rockylinux:9

    • 包含内容 :常用的系统库和工具。
    • 体积 :81.26 MB(linux/amd64)。
    • 适用场景 :通用容器化应用,开发和测试环境。
  • rockylinux/rockylinux:9-minimal

    • 包含内容 :基本系统库和部分基础工具。
    • 体积 :56.52 MB(linux/amd64)。
    • 适用场景 :轻量化和单任务应用,但比 ubi-micro 需要更多功能。
  • rockylinux/rockylinux:9-ubi-init

    • 包含内容 :较完整的系统环境,支持 systemd 和各类服务。
    • 体积 :94.03 MB(linux/amd64)。
    • 适用场景 :复杂的应用环境,开发和测试需要完整系统环境的场景。
  • rockylinux/rockylinux:9-ubi-micro

    • 包含内容 :极简系统库和工具。
    • 体积 :7.17 MB(linux/amd64)。
    • 适用场景 :高效和高安全性需求的场景,微服务架构。

repo-info/repos/rockylinux/local/9.3.mdrepo-info/repos/rockylinux/local/9.3-minimal.md 为例进行对比:

rockylinux/rockylinux:9-minimal 对应 dnf 只有 dnf-data 包。

rpm package: dnf-data-4.14.0-8.el9.noarch
Licenses (from rpm --query): GPLv2+

rockylinux/rockylinux:9 对应 dnf 包括 dnfdnf-data 两个包。

rpm package: dnf-4.14.0-8.el9.noarch
Licenses (from rpm --query): GPLv2+
WARNING: unable to find source (dnf download failed or returned no results)!
rpm package: dnf-data-4.14.0-8.el9.noarch
Licenses (from rpm --query): GPLv2+
WARNING: unable to find source (dnf download failed or returned no results)!

镜像选择指南

  • 如果需要一个通用的基础环境,可以选择 rockylinux/rockylinux:9
  • 如果需要一个轻量化但不至于极简的环境,可以选择 rockylinux/rockylinux:9-minimal
  • 如果需要一个包含系统服务的更完整环境,可以选择 rockylinux/rockylinux:9-ubi-init
  • 如果需要一个极简和高效的环境,适用于微服务架构,可以选择 rockylinux/rockylinux:9-ubi-micro

根据您的具体需求,选择合适的镜像来构建和运行容器化应用,以优化容器的性能、体积和安全性。需要注意的是,镜像中包含的工具和命令越多,对应的攻击面就越大;而镜像越精简,您可用的工具和命令也就越少,这可能会影响故障排除的效率。因此,木子通常会基于 rockylinux/rockylinux:9-minimal 镜像来构建适合自己需求的镜像,例如:builder-java、runtime-java、builder-golang、runtime-golang 等。通过这种方法,您可以在保持镜像精简的同时,确保拥有足够的工具来满足特定应用需求。

参考文献

[1] (Re)Introducing the Red Hat Universal Base Image
[2] Universal Base Images (UBI): Images, repositories, packages, and source code – Red Hat Customer Portal

Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇