Rocky Linux Docker 官方镜像完全指南:标签体系、Minimal 变体与 yum 包管理实践

原创2026-10-13 18:09:571,678 阅读
文章标签:文档

Rocky Linux Docker 官方镜像完全指南:标签体系、Minimal 变体与 yum 包管理实践

本文围绕 Docker 官方镜像计划中的 Rocky Linux 镜像(对应本仓库 rockylinux/ 目录的官方文档)展开,系统讲解其项目背景、支持的镜像标签与架构、latest 标签缺失的原因、滚动构建(Rolling Builds)与次要版本(Minor Tags)的使用场景,以及 nodocs 导致的包文件缺失问题与解决办法。读完本文,你将能根据自己的场景(生产环境滚动更新、对照安装介质、最小化依赖)正确选择并安全使用 rockylinux:8 / rockylinux:9 系列镜像,并理解官方文档背后由本仓库模板生成的维护机制。

Rocky Linux 官方镜像文档 logo

重要提示:镜像更新现状

需要特别说明的是,Docker 官方镜像计划(Official Images)由 Docker 团队统一管理,目前存在一些技术约束,导致 Rocky Linux 暂时无法在该计划内发布更新镜像。因此,对于当前最新、最及时的容器镜像,官方文档建议读者以 Rocky Linux 官方维护的 Docker Hub 仓库(rockylinux/rockylinux)为准。这一提示被记录在 rockylinux/deprecated.md 中,并由模板机制自动嵌入生成后的 rockylinux/README.md 顶部,属于使用本镜像前必须了解的背景信息。

快速参考:维护方与帮助渠道

  • 维护方:Rocky Enterprise Software Foundation(RESF,Rocky 企业软件基金会),其镜像构建配置维护在 sig-cloud-instance-images 仓库中,对应本仓库的 rockylinux/maintainer.md 与 rockylinux/github-repo 记录的信息。
  • 获取帮助:官方文档列出的渠道包括 Docker 社区 Slack、Server Fault、Unix & Linux 以及 Stack Overflow 等通用社区问答平台;此外 Rocky Linux 社区还提供 IRC(Libera.Chat 上的 #rockylinux)和 Mattermost 实例(chat.rockylinux.org)供用户交流反馈。
  • 提交问题:Rocky Linux 的问题跟踪入口为 bugs.rockylinux.org,以及 sig-cloud-instance-images 仓库的 issues 区,详见 rockylinux/issues.md。

支持的标签与对应 Dockerfile

镜像标签直接决定你拉取到的系统版本与构建形态。截至本仓库文档记录的版本,rockylinux 官方镜像支持以下标签(每个标签均对应 sig-cloud-instance-images 仓库中特定提交的 Dockerfile):

标签 说明 对应主版本
9.3.20231119、9.3、9 Rocky Linux 9.3 基础镜像 9
9.3.20231119-minimal、9.3-minimal、9-minimal Rocky Linux 9.3 精简镜像(Minimal 变体) 9
8.9.20231119、8.9、8 Rocky Linux 8.9 基础镜像 8
8.9.20231119-minimal、8.9-minimal、8-minimal Rocky Linux 8.9 精简镜像(Minimal 变体) 8

可以看出,标签遵循「完整日期版本号 → 次版本号 → 主版本号」的层级结构:例如 9.3.20231119 是最精确的完整快照标签,9.3 对应 9.3 系列,9 则滚动指向 9 系列最新构建;-minimal 后缀用于标记精简变体。这一标签列表并非手工维护,而是由仓库根目录 update.sh 配合 .template-helpers/generate-dockerfile-links-partial.sh 从 Docker 官方镜像库的 library manifest 中动态抓取生成,因此只要上游发布新版本,标签表就会自动更新。

支持的架构

Rocky Linux 官方镜像目前为以下四种 CPU 架构构建:

  • amd64(x86-64)
  • arm64v8(64 位 ARM)
  • ppc64le(64 位 PowerPC 小端)
  • s390x(IBM Z / LinuxONE)

这意味着在上述任意架构的主机上直接 docker pull 对应标签,Docker 都会自动匹配适合当前平台的镜像层,无需手动指定架构。

关于 Rocky Linux 项目本身

Rocky Linux 是一个社区支持的发行版,其源代码直接取自 Red Hat 免费公开提供的 Red Hat Enterprise Linux(RHEL)源码。由此,Rocky Linux 的目标是与 RHEL 在功能上保持兼容。项目主要的工作是替换包中上游厂商的品牌标识与美术素材,其余保持与 RHEL 一致的体验;它完全免费且允许自由再分发。

官方文档明确了以下几个关键的项目事实:

  • 维护周期:每个 Rocky Linux 版本通过安全更新维护最长可达 10 年(Red Hat 针对其公开源码的支持时长随时间有所变化)。
  • 发布节奏:大约每 2 年发布一个新的主版本。
  • 周期更新:每个版本大约每 6 个月进行一次定期更新,以支持更新的硬件。

这带来的是一个安全、低维护、可靠、可预测且可复现的 Linux 运行环境——这也是它被大量生产环境选作容器基础镜像的根本原因。项目文档与维基分别由 docs.rockylinux.org 与 wiki.rockylinux.org 提供。

Rocky Linux 镜像使用指南

latest 标签为何不存在

与多数官方镜像不同,Rocky Linux 刻意不提供 latest 标签。原因是避免用户在不知情的情况下拉取到与自己预期不符的主版本。正确做法是始终指定主版本标签:rockylinux:8 或 rockylinux:9,或者使用更具体的标签(如 rockylinux:9.3)以确保精确匹配目标版本。

# 推荐:明确指定主版本
docker pull rockylinux:9
docker pull rockylinux:8

# 不推荐:不存在 latest 标签,会直接报错
docker pull rockylinux:latest

Minimal 精简变体

在基础镜像之外,官方还提供 Minimal 容器:它内置 microdnf(面向容器的精简版 dnf 包管理器),并裁剪掉大量非必要依赖,使镜像体积更小、攻击面更小。使用任意带 -minimal 后缀的标签即可,例如:

docker pull rockylinux:9-minimal
docker pull rockylinux:8-minimal

Minimal 变体适合对镜像体积敏感、且只需要最小运行依赖的场景;而基础镜像保留完整的 yum/dnf 工具链,更适合需要安装大量软件包的场景。

滚动构建(Rolling Builds)

对于所有仍处于活跃维护期的版本,Rocky Linux 都会定期提供更新镜像:每月更新一次,遇到紧急修复(如安全补丁)则按需更新。这些滚动更新只使用主版本号作为标签,例如 docker pull rockylinux:8。当你反复拉取同一主版本标签时,会得到持续跟进上游修复的最新快照,这是生产环境最推荐的使用方式。

次要版本标签(Minor Tags):对照安装介质,不接收更新

与滚动构建相对的是次要版本标签——它们与官方安装 ISO 的介质内容一一对应(例如 rockylinux:8.4)。需要特别警惕:

这些镜像不会接收任何更新,因为它们的定位就是精确还原对应安装介质的内容。

如果你选择使用这类标签,官方文档强烈建议在 Dockerfile 中加入一次完整的更新操作,或采取其他措施消除安全隐患:

FROM rockylinux:8.4

# 强烈建议:进入容器后立即更新并清理缓存,以弥补该标签不滚动更新的缺陷
RUN yum -y update && yum clean all

使用方式为直接指定次要版本标签:

docker pull rockylinux:8.4

包管理文档:理解 nodocs 与缺失的文件

一个常见的坑是:在 Rocky Linux 容器中通过 yum 安装软件包后,发现部分文档类文件缺失。原因在于——默认情况下,Rocky Linux 容器使用 yum 的 nodocs 选项构建,以显著减小镜像体积。该选项在全局配置文件 /etc/yum.conf 中以一行 tsflags=nodocs 体现,效果是安装包时不写入文档文件(如 man 手册、示例文档等)。

如果某个软件包确实需要这些文件,处理方式如下:

  1. 编辑 /etc/yum.conf,注释掉 tsflags=nodocs 这一行:
    # tsflags=nodocs
    
  2. 重新安装(或重装)对应的软件包:
    yum reinstall <package-name>
    # 或
    yum install <package-name>
    

从源码结构看,该文档内容直接来自 rockylinux/content.md 的 Package documentation 一节,由 update.sh 在生成 rockylinux/README.md 时原样嵌入,属于镜像使用的官方权威说明。

许可信息

Rocky Linux 镜像内软件的相关许可信息以 rockylinux.org 的法律条款页面为准,即 rockylinux/license.md 中记录的链接。此外需要注意:

  • 与所有 Docker 镜像一样,镜像内还包含基础发行版自带的 Bash 等软件,以及主软件的直接或间接依赖,这些可能遵循各自不同的开源许可。
  • 部分可自动探测到的附加许可信息,可以在 Docker 官方镜像的 repo-info 仓库 repos/rockylinux/ 目录中找到(本仓库根目录 README.md 对该机制有总体说明)。
  • 对于任何预构建镜像的使用,最终合规责任在使用者自身:使用者有义务确保对镜像内所有软件的使用符合其各自许可条款。

附:官方文档的生成机制

本文所依据的 rockylinux/README.md 并非手工书写,而是由本仓库的模板系统自动生成的产物:开发者只需维护 rockylinux/content.md(镜像长描述正文)、rockylinux/README-short.txt(Docker Hub 短描述,即"The official build of Rocky Linux.")、rockylinux/metadata.json(Docker Hub 分类,本镜像归类为 operating-systems 操作系统类)等素材文件,再运行根目录的 update.sh,脚本即会把维护方、标签表、架构表、Logo、许可、弃用提示等模板片段与 content.md 拼装成最终 README。理解这一点有助于判断:README 中「支持的标签」「支持架构」等区块会随上游镜像库 manifest 的变动而自动更新,而「使用指南」「包管理」等实操内容则以上述素材文件为权威来源。

登录后查看全文
docs