> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-18-zhang-oci-rong-qi/18.2.-rong-qi-jing-xiang-ming-ming-he-biao-qian.md).

# 18.2.容器镜像命名和标签

## 18.2.1. 引言

FreeBSD 的官方容器镜像从基本系统软件包构建，这些软件包本身在 FreeBSD 发行过程中构建，并发布到公共注册表。

本指南说明了镜像的命名和标签方式，帮助你为需求选择合适的镜像，并确保你理解每种选择的含义，因为新镜像会发布，且在某些情况下，可变标签会被修订。

此命名约定与新的基本系统软件包命名方案一致，在容器镜像和相应的 FreeBSD 发行版之间提供了清晰的来源关系。

## 18.2.2. 可用镜像类型

提供五种类型的 FreeBSD 容器镜像，适用于 `amd64` 和 `aarch64` 架构。

### 18.2.2.1. `freebsd-static`

静态镜像旨在作为基础镜像，用于完全静态链接的工作负载。它不包含库和二进制文件，仅包含大多数此类应用程序所需的支撑文件。

* 公共 TLS 证书
* 最小化密码文件
* 最小化 termcap
* 时区数据库

请注意，按照设计，它的占用空间很小，以使容器被攻破时对攻击者的价值降低。

其中没有 UNIX shell、命令行工具、动态库，也没有包管理器。

它是 FreeBSD 项目提供的最小镜像。

### 18.2.2.2. `freebsd-dynamic`

动态镜像使用静态镜像作为父层，并支持使用共享库（包括 `libc`）。

大多数 FreeBSD 软件应该可在此镜像中正常运行，仅需少量修改。

它没有 shell、rc 系统，也没有包管理器。

这些限制提供了额外的安全性，使得攻击者在被攻破的容器中难以横向移动，或使用从未安装的工具。

### 18.2.2.3. `freebsd-runtime`

同样，runtime 镜像在前面的动态层之上构建，并最终添加了用户所期望的最少内容——UNIX shell、rc 系统和包管理器。

它是移植现有应用程序并尽量减少修改的理想基础镜像。

用户需要包含额外的 FreeBSD 基本系统库，以及来自 Ports 树的额外软件包。

这是最接近典型 FreeBSD 系统的镜像，包含 [pkg(8)](https://man.freebsd.org/cgi/man.cgi?query=pkg\&sektion=8\&format=html) 工具，让用户能安装或执行几乎任何操作，类似于非容器化系统。

### 18.2.2.4. `freebsd-notoolchain`

此基础镜像包含典型 FreeBSD 系统上几乎所有预期的工具，不包括直接与硬件相关的工具（因此在容器中通常无用），以及编译器和相关工具链（因为它们相当大）。

### 18.2.2.5. `freebsd-toolchain`

Toolchain 基础镜像是所有前述镜像的总和，包括完整的编译器和工具链。

通常可像在正常的非 jail FreeBSD 系统上一样为 FreeBSD 编译几乎所有软件。

所有镜像遵循一致的命名模式，派生自它们所基于的 FreeBSD 发行版。

## 18.2.3. 镜像标签结构

### 18.2.3.1. 不可变标签

不可变标签永远不会改变，非常适合需要稳定性和可预测性的生产系统。

这些是发行过程使用的最常见标签。

即使 FreeBSD 安全补丁或勘误通知发布，它们也不会改变。

它们是软件部署基础镜像的理想选择，在这些部署中，即使以更主动的安全修补为代价，也期望高度的可重现性。

* `major.minor`（例如 `14.4`）：指向特定的 FreeBSD RELEASE 版本
* `major.minor.pX`（例如 `14.4p1`）：指向 RELEASE 的特定补丁级别
* `major.snapYYYYMMDDHHMMSS`（例如 `16.snap20260325035941`）：带时间戳的快照构建

### 18.2.3.2. 可变标签

可变标签会随时间更新，非常适合始终希望获得最新更新但仍希望与 FreeBSD ABI 兼容性保持一致的生产或 CI/CD 系统。

* `major`（例如 `15`）将始终是 15.x 稳定 ABI 线上的最新支持 RELEASE 版本
* `major.snap`（例如 `15.snap`）遵循 15.x 稳定 ABI 线上的最新开发人员快照，通常会领先于官方发行版，并存在中断、不兼容或其他意外问题的风险。

这是最可变的标签，应谨慎使用。

它们与使用 FreeBSD 的 STABLE 或 CURRENT 快照完全相同，因为它们使用这些镜像作为源。

## 18.2.4. 何时使用每种标签类型

### 18.2.4.1. 用于生产环境

使用不可变标签以确保环境保持一致：

* `freebsd-runtime:15.0` - 固定到 FreeBSD 15.0-RELEASE

当发布安全补丁时，你必须使用新的镜像标签显式重建或更新。

### 18.2.4.2. 用于持续集成和开发

使用可变标签自动获取最新更新：

* `freebsd-runtime:15` - 始终是 15.x 系列中的最新官方 RELEASE

这些额外的可变标签将遵循 FreeBSD STABLE 和 CURRENT 的定期发布快照。

如果你想针对 FreeBSD 未来发行版可能包含的内容测试，并接受偶尔的中断或意外更改，请使用这些标签。

* `freebsd-runtime:14.snap` - 始终是 14-STABLE 分支的最新构建
* `freebsd-runtime:15.snap` - 始终是 15-STABLE 分支的最新构建
* `freebsd-runtime:16.snap` - 始终是 16-CURRENT 分支的最新构建
