如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
[!IMPORTANT] 自 2025 年 8 月起,由 PostgreSQL Docker 社区维护的官方 Postgres 镜像已停止对 Debian bullseye 的支持。作为响应,CloudNativePG 项目已完成所有系统镜像向新的基于 bake 的构建流程的过渡。我们现在直接基于官方 Debian slim 镜像构建,完全脱离官方 Postgres 镜像。
本仓库提供维护脚本,用于为所有受支持的 PostgreSQL 主版本生成不可变应用容器:
| 版本 | 发布日期 | 终止支持日期(EOL) |
|---|---|---|
| 18 | 2025-09-25 | 2030-11-14 |
| 17 | 2024-09-26 | 2029-11-08 |
| 16 | 2023-09-14 | 2028-11-09 |
| 15 | 2022-10-13 | 2027-11-11 |
| 14 | 2021-09-30 | 2026-11-12 |
| 13 | 2020-09-24 | 2025-11-13 |
这些镜像旨在作为 Kubernetes 环境中 CloudNativePG (CNPG) 运算符的操作数,不适合独立使用。
由于历史原因,系统镜像还包含两个额外的滚动标签:
system- MM.mm:特定PostgreSQL次要版本(例如16.10)在Debian bullseye上的最新系统镜像。MM:特定PostgreSQL主要版本(例如16)在Debian bullseye上的最新系统镜像。[!IMPORTANT] 这些标签已弃用,将在bullseye镜像达到生命周期结束时移除。请迁移到明确包含镜像类型和发行版版本的受支持标签格式(例如16.10-minimal-trixie)。
CloudNativePG在制品仓库中发布CloudNativePG的ClusterImageCatalog清单,每个受支持的镜像类型和操作系统版本组合都有一个可用目录。
[!IMPORTANT] 如果您仍依赖旧版ClusterImageCatalog-bullseye.yaml和ClusterImageCatalog-bookworm.yaml清单,请尽快迁移到新目录。这些旧版清单已弃用,将与系统镜像一起移除。
CNPG PostgreSQL容器镜像构建时附带以下证明,以确保透明度和可追溯性:
例如,要检索特定平台(如linux/amd64)的多架构镜像的SBOM,可使用以下命令:
docker buildx imagetools inspect \
--format '{{ json (index .SBOM "linux/amd64").SPDX }}'
此命令以JSON格式输出SBOM,提供软件组件和构建依赖项的详细视图。
minimal和standard CloudNativePG容器镜像使用cosign(Sigstore生态系统中的工具)进行安全签名。此签名过程通过GitHub Actions自动化,并利用通过OpenID Connect颁发的短期令牌。
令牌颁发者为[***]
要使用镜像摘要验证其真实性,可运行以下cosign命令:
cosign verify IMAGE \
--certificate-identity-regexp="^https://github.com/cloudnative-pg/postgres-containers/" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com"
为进一步加强容器镜像的安全性,我们在CI/CD工作流中执行自动化镜像扫描。这些扫描有助于确保镜像在发布或部署前遵循最佳实践并免受已知漏洞影响:
有关构建PostgreSQL容器镜像的详细说明,请参阅BUILD.md文件。
Renovate可用于自动更新各种依赖项。由于CloudNativePG的Cluster CRD不会被Renovate自动识别,必须配置自定义正则表达式管理器。以下示例使用JSON5;将其保存为renovate.json5,或转换键/注释以用于renovate.json:
{
customManagers: [
{
// CloudNativePG Cluster imageName
customType: 'regex',
managerFilePatterns: [
'/\\.yaml$/',
],
matchStrings: [
'imageName: (? [^\\s:]+):(? [^\\s@]+)(?:@(? sha256:[a-f0-9]{64}))?',
],
datasourceTemplate: 'docker',
// matches: 17.6-202509151215-minimal-trixie
versioningTemplate: 'regex:^(? \\d+)\\.(? \\d+)-(? \\d+)-(? \\S+)
Renovate永远不会更改标签的兼容性部分(镜像类型和Debian基础,例如system-bookworm),因此升级将保持在相同的操作系统和glibc/ICU版本。由于PostgreSQL区域设置数据的影响,切换到不同的基础(例如从bookworm到trixie)是手动操作。PostgreSQL主要版本更新通过依赖项仪表板进行路由,以便人工规划和应用。要保持引用完全可重现,您还可以启用针对CloudNativePG镜像的pinDigests。如果您的仓库包含其他YAML清单,请将managerFilePatterns缩小到存放Cluster资源的目录,例如'/clusters/.*\\.yaml$/'。
## 许可和版权
本软件根据Apache License 2.0许可提供。
版权所有 © CloudNativePG贡献者,CloudNativePG是LF Projects, LLC的一个系列项目。
Barman Cloud由EnterpriseDB根据GNU GPL 3许可分发。
PGAudit根据PostgreSQL许可分发。
Postgres Failover Slots由EnterpriseDB根据PostgreSQL许可分发。
pgvector根据PostgreSQL许可分发。
## 商标
Postgres、PostgreSQL和Slonik徽标是加拿大PostgreSQL社区协会的商标或注册商标,经其许可使用。
## Debian Releases
CloudNativePG PostgreSQL 容器镜像基于官方的 `stable` 和 `oldstable` Debian 发行版,由 Debian 项目 维护和支持。
下表总结了相关 Debian 版本的支持生命周期,包括生命周期结束(EOL)和长期支持(LTS)日期。
| 名称 | 版本 | 发布日期 | EOL | LTS | 状态 |
| ------------------------ | :----: | :---------: | :---------: | :---------: | :--------- |
| Trixie (`stable`) | 13 | 2025-08-09 | 2028-08-09 | 2030-06-30 | 受支持 |
| Bookworm (`oldstable`) | 12 | 2023-06-10 | 2026-06-10 | 2028-06-30 | 受支持 |
| Bullseye (`oldoldstable`) | 11 | 2021-08-14 | 2024-08-14 | 2026-08-31 | 已弃用 |
> [!IMPORTANT]
> CloudNativePG 项目对基于 Debian 的镜像提供全面支持,直至每个发行版达到其官方生命周期结束(EOL)。在 EOL 之后且长期支持(LTS)开始之前,对于已弃用的发行版(如 `oldoldstable`)的镜像,将基于**尽力而为**的原则进行维护。如果需要在 LTS 日期之前停止支持,将在本页面发布至少**三个月的提前通知**。
## Image Types
我们目前提供并维护三种主要类型的 PostgreSQL 镜像:
* `minimal`
* `standard`
* `system`
`minimal` 和 `standard` 镜像均设计为可与备份插件(如 https://github.com/cloudnative-pg/plugin-barman-cloud)配合使用。
`system` 镜像构建于 `standard` 镜像之上,还包含 Barman Cloud 二进制文件。
### Minimal Images
Minimal 镜像是轻量级的,构建于 https://hub.docker.com/_/debian 之上。它们使用由 PostgreSQL 全球开发组(PGDG)维护的 APT PostgreSQL 软件包。
这些镜像通过标签名称中包含 `minimal` 来标识,例如:`17.6-minimal-trixie`。
> [!NOTE]
> 从 PostgreSQL 18 开始,`minimal` 镜像**将不**包含 LLVM JIT 支持(由 `postgresql-MM-jit` 软件包提供,其中 `MM` 表示 PostgreSQL 主版本)。JIT 仅在 `standard` 镜像中可用。
### Standard Images
Standard 镜像是 `minimal` 镜像的扩展,增加了以下额外功能:
- PGAudit
- Postgres Failover Slots
- pgvector
- 所有区域设置
- LLVM JIT 支持
- 对于 PostgreSQL 17 及更早版本:包含在主要 PostgreSQL 软件包中,`minimal` 镜像中也可用
- 从 PostgreSQL 18 开始:由单独的 `postgresql-MM-jit` 软件包提供
Standard 镜像可通过名称中的 `standard` 标签识别,例如:`17.6-standard-trixie`。
> [!NOTE]
> Standard 镜像设计为在与 CloudNativePG 一起使用时提供与旧版 `system` 镜像等效的功能。要实现功能对等,您必须使用 https://github.com/cloudnative-pg/plugin-barman-cloud 来替代 `system` 镜像中的原生 Barman Cloud 支持。
### System Images (deprecated)
从 2025 年 9 月开始,system 镜像基于 `standard` 镜像构建,并包含 Barman Cloud 二进制文件。
> [!IMPORTANT]
> `system` 镜像已弃用,一旦 CloudNativePG 中对 Barman Cloud 的内置支持逐步淘汰,这些镜像将被移除。虽然只要内置 Barman Cloud 仍然可用,您仍可以使用它们,但您应计划迁移到 `minimal` 或 `standard` 镜像并配合 Barman Cloud 插件,或采用其他受支持的备份解决方案。
> [!IMPORTANT] 这些标签已**弃用**,并将在 `bullseye` 镜像达到生命周期结束时**移除**。请迁移至受支持的标签格式,此类格式明确包含**镜像类型**和**发行版版本**(例如 `16.10-minimal-trixie`)。
## 镜像目录
CloudNativePG 会在 https://github.com/cloudnative-pg/artifacts/tree/main/image-catalogs中发布 CloudNativePG 的 `ClusterImageCatalog` 清单,每种受支持的镜像类型和操作系统版本组合对应一个目录。
> [!IMPORTANT] 如果您仍依赖旧版的 `ClusterImageCatalog-bullseye.yaml` 和 `ClusterImageCatalog-bookworm.yaml` 清单,请尽快迁移至新目录。这些旧版清单已弃用,并将随 `system` 镜像一同移除。
## 安全性
### 构建证明
CNPG PostgreSQL 容器镜像构建时包含以下证明,以确保透明度和可追溯性:
- **软件物料清单 (SBOM)**:镜像中包含或构建过程中使用的软件制品的综合列表,采用 https://github.com/in-toto/attestation/blob/main/spec/predicates/spdx.md格式化。
- **来源证明**:详细说明镜像构建方式的元数据,遵循 SLSA Provenance 框架。
例如,要检索特定平台(如 `linux/amd64`)的多架构镜像的 SBOM,可使用以下命令:
```bash
docker buildx imagetools inspect \
--format '{{ json (index .SBOM "linux/amd64").SPDX }}'
此命令以 JSON 格式输出 SBOM,提供软件组件和构建依赖项的详细视图。
minimal 和 standard CloudNativePG 容器镜像使用 https://github.com/sigstore/cosign%EF%BC%88Sigstore 生态系统中的工具)进行安全签名。签名过程通过 GitHub Actions 自动化,并利用 https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect%E3%80%82
令牌颁发者为 https://token.actions.githubusercontent.com,签名身份对应在 cloudnative-pg/postgres-containers 仓库下执行的 GitHub 工作流。该工作流使用 https://github.com/marketplace/actions/cosign-installer 辅助签名过程。
要使用镜像摘要验证其真实性,可运行以下 cosign 命令:
cosign verify IMAGE \
--certificate-identity-regexp="^https://github.com/cloudnative-pg/postgres-containers/" \
--certificate-oidc-issuer="[***]"
为进一步加强容器镜像的安全性,我们在 CI/CD 工作流中执行自动化镜像扫描。这些扫描有助于确保镜像在发布或部署前符合最佳实践且无已知漏洞:
有关构建 PostgreSQL 容器镜像的详细说明,请参考 BUILD.md 文件。
https://github.com/renovatebot/renovate 可用于自动更新各种依赖项。由于 CloudNativePG 的 Cluster CRD 不会被 Renovate 自动识别,必须配置自定义正则管理器。以下示例使用 JSON5;将其保存为 renovate.json5,或转换键/注释以用于 renovate.json:
{
customManagers: [
{
// CloudNativePG Cluster imageName
customType: 'regex',
managerFilePatterns: [
'/\\.yaml$/',
],
matchStrings: [
'imageName: (? [^\\s:]+):(? [^\\s@]+)(?:@(? sha256:[a-f0-9]{64}))?',
],
datasourceTemplate: 'docker',
// matches: 17.6-202509151215-minimal-trixie
versioningTemplate: 'regex:^(? \\d+)\\.(? \\d+)-(? \\d+)-(? \\S+)
Renovate 永远不会更改标签的兼容性部分(镜像类型和 Debian 基础,例如 `system-bookworm`),因此升级会保持在相同的 OS 和 glibc/ICU 版本。由于 PostgreSQL 区域数据影响,切换到不同基础(例如从 `bookworm` 到 `trixie`)是手动操作。PostgreSQL 主版本更新会通过 依赖项仪表板 路由,以便人工规划和应用。要保持引用完全可重现,还可以为 CloudNativePG 镜像启用 `pinDigests`。如果您的仓库包含其他 YAML 清单,请将 `managerFilePatterns` 缩小到存放 `Cluster` 资源的目录,例如 `'/clusters/.*\\.yaml$/'`。
## 许可和版权
本软件基于 Apache License 2.0 许可。
版权所有 © CloudNativePG 贡献者,CloudNativePG 为 LF Projects, LLC 的系列项目。
Barman Cloud 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/barman/blob/master/LICENSE 分发。
PGAudit 依据 https://github.com/pgaudit/pgaudit/blob/master/LICENSE 分发。
Postgres Failover Slots 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/pg_failover_slots/blob/master/LICENSE 分发。
pgvector 依据 https://github.com/pgvector/pgvector/blob/master/LICENSE 分发。
## 商标
*Postgres、PostgreSQL 和 Slonik 徽标 是加拿大 PostgreSQL 社区协会的商标或注册商标,经其许可使用。*,
autoReplaceStringTemplate: 'imageName: {{{depName}}}:{{{newValue}}}{{#if newDigest}}@{{{newDigest}}}{{/if}}',
}
],
packageRules: [
{
matchPackageNames: ['ghcr.io/cloudnative-pg/postgresql'],
matchUpdateTypes: ['major'],
dependencyDashboardApproval: true,
}
]
}
Renovate永远不会更改标签的兼容性部分(镜像类型和Debian基础,例如system-bookworm),因此升级将保持在相同的操作系统和glibc/ICU版本。由于PostgreSQL区域设置数据的影响,切换到不同的基础(例如从bookworm到trixie)是手动操作。PostgreSQL主要版本更新通过依赖项仪表板进行路由,以便人工规划和应用。要保持引用完全可重现,您还可以启用针对CloudNativePG镜像的pinDigests。如果您的仓库包含其他YAML清单,请将managerFilePatterns缩小到存放Cluster资源的目录,例如'/clusters/.*\.yaml$/'。
本软件根据Apache License 2.0许可提供。
版权所有 © CloudNativePG贡献者,CloudNativePG是LF Projects, LLC的一个系列项目。
Barman Cloud由EnterpriseDB根据GNU GPL 3许可分发。
PGAudit根据PostgreSQL许可分发。
Postgres Failover Slots由EnterpriseDB根据PostgreSQL许可分发。
pgvector根据PostgreSQL许可分发。
Postgres、PostgreSQL和Slonik徽标是加拿大PostgreSQL社区协会的商标或注册商标,经其许可使用。
CloudNativePG PostgreSQL 容器镜像基于官方的 CODE_TOKEN_8 和 CODE_TOKEN_9 Debian 发行版,由 Debian 项目 维护和支持。
下表总结了相关 Debian 版本的支持生命周期,包括生命周期结束(EOL)和长期支持(LTS)日期。
| 名称 | 版本 | 发布日期 | EOL | LTS | 状态 |
|---|---|---|---|---|---|
| Trixie (CODE_TOKEN_10) | 13 | 2025-08-09 | 2028-08-09 | 2030-06-30 | 受支持 |
| Bookworm (CODE_TOKEN_11) | 12 | 2023-06-10 | 2026-06-10 | 2028-06-30 | 受支持 |
| Bullseye (CODE_TOKEN_12) | 11 | 2021-08-14 | 2024-08-14 | 2026-08-31 | 已弃用 |
[!IMPORTANT] CloudNativePG 项目对基于 Debian 的镜像提供全面支持,直至每个发行版达到其官方生命周期结束(EOL)。在 EOL 之后且长期支持(LTS)开始之前,对于已弃用的发行版(如 CODE_TOKEN_13)的镜像,将基于尽力而为的原则进行维护。如果需要在 LTS 日期之前停止支持,将在本页面发布至少三个月的提前通知。
我们目前提供并维护三种主要类型的 PostgreSQL 镜像:
CODE_TOKEN_17 和 CODE_TOKEN_18 镜像均设计为可与备份插件(如 https://github.com/cloudnative-pg/plugin-barman-cloud%EF%BC%89%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E3%80%82
CODE_TOKEN_19 镜像构建于 CODE_TOKEN_20 镜像之上,还包含 Barman Cloud 二进制文件。
Minimal 镜像是轻量级的,构建于 https://hub.docker.com/_/debian 之上。它们使用由 PostgreSQL 全球开发组(PGDG)维护的 APT PostgreSQL 软件包。
这些镜像通过标签名称中包含 CODE_TOKEN_21 来标识,例如:CODE_TOKEN_22。
[!NOTE] 从 PostgreSQL 18 开始,CODE_TOKEN_23 镜像将不包含 LLVM JIT 支持(由 CODE_TOKEN_24 软件包提供,其中 CODE_TOKEN_25 表示 PostgreSQL 主版本)。JIT 仅在 CODE_TOKEN_26 镜像中可用。
Standard 镜像是 CODE_TOKEN_27 镜像的扩展,增加了以下额外功能:
Standard 镜像可通过名称中的 CODE_TOKEN_30 标签识别,例如:CODE_TOKEN_31。
[!NOTE] Standard 镜像设计为在与 CloudNativePG 一起使用时提供与旧版 CODE_TOKEN_32 镜像等效的功能。要实现功能对等,您必须使用 https://github.com/cloudnative-pg/plugin-barman-cloud 来替代 CODE_TOKEN_33 镜像中的原生 Barman Cloud 支持。
从 2025 年 9 月开始,system 镜像基于 CODE_TOKEN_34 镜像构建,并包含 Barman Cloud 二进制文件。
[!IMPORTANT] CODE_TOKEN_35 镜像已弃用,一旦 CloudNativePG 中对 Barman Cloud 的内置支持逐步淘汰,这些镜像将被移除。虽然只要内置 Barman Cloud 仍然可用,您仍可以使用它们,但您应计划迁移到 CODE_TOKEN_36 或 CODE_TOKEN_37 镜像并配合 Barman Cloud 插件,或采用其他受支持的备份解决方案。
[!IMPORTANT] 这些标签已弃用,并将在 CODE_TOKEN_38 镜像达到生命周期结束时移除。请迁移至受支持的标签格式,此类格式明确包含镜像类型和发行版版本(例如 CODE_TOKEN_39)。
CloudNativePG 会在 https://github.com/cloudnative-pg/artifacts/tree/main/image-catalogs%E4%B8%AD%E5%8F%91%E5%B8%83 CloudNativePG 的 CODE_TOKEN_41 清单,每种受支持的镜像类型和操作系统版本组合对应一个目录。
[!IMPORTANT] 如果您仍依赖旧版的 CODE_TOKEN_42 和 CODE_TOKEN_43 清单,请尽快迁移至新目录。这些旧版清单已弃用,并将随 CODE_TOKEN_44 镜像一同移除。
CNPG PostgreSQL 容器镜像构建时包含以下证明,以确保透明度和可追溯性:
软件物料清单 (SBOM):镜像中包含或构建过程中使用的软件制品的综合列表,采用 https://github.com/in-toto/attestation/blob/main/spec/predicates/spdx.md%E6%A0%BC%E5%BC%8F%E5%8C%96%E3%80%82
来源证明:详细说明镜像构建方式的元数据,遵循 SLSA Provenance 框架。
例如,要检索特定平台(如 CODE_TOKEN_45)的多架构镜像的 SBOM,可使用以下命令:
CODE_TOKEN_3
此命令以 JSON 格式输出 SBOM,提供软件组件和构建依赖项的详细视图。
CODE_TOKEN_46 和 CODE_TOKEN_47 CloudNativePG 容器镜像使用 https://github.com/sigstore/cosign%EF%BC%88Sigstore 生态系统中的工具)进行安全签名。签名过程通过 GitHub Actions 自动化,并利用 https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect%E3%80%82
令牌颁发者为 CODE_TOKEN_48,签名身份对应在 CODE_TOKEN_49 仓库下执行的 GitHub 工作流。该工作流使用 https://github.com/marketplace/actions/cosign-installer 辅助签名过程。
要使用镜像摘要验证其真实性,可运行以下 CODE_TOKEN_51 命令:
CODE_TOKEN_4
为进一步加强容器镜像的安全性,我们在 CI/CD 工作流中执行自动化镜像扫描。这些扫描有助于确保镜像在发布或部署前符合最佳实践且无已知漏洞:
有关构建 PostgreSQL 容器镜像的详细说明,请参考 BUILD.md 文件。
https://github.com/renovatebot/renovate 可用于自动更新各种依赖项。由于 CloudNativePG 的 CODE_TOKEN_52 CRD 不会被 Renovate 自动识别,必须配置自定义正则管理器。以下示例使用 JSON5;将其保存为 CODE_TOKEN_53,或转换键/注释以用于 CODE_TOKEN_54:
CODE_TOKEN_5
Renovate 永远不会更改标签的兼容性部分(镜像类型和 Debian 基础,例如 CODE_TOKEN_55),因此升级会保持在相同的 OS 和 glibc/ICU 版本。由于 PostgreSQL 区域数据影响,切换到不同基础(例如从 CODE_TOKEN_56 到 CODE_TOKEN_57)是手动操作。PostgreSQL 主版本更新会通过 依赖项仪表板 路由,以便人工规划和应用。要保持引用完全可重现,还可以为 CloudNativePG 镜像启用 CODE_TOKEN_58。如果您的仓库包含其他 YAML 清单,请将 CODE_TOKEN_59 缩小到存放 CODE_TOKEN_60 资源的目录,例如 CODE_TOKEN_61。
本软件基于 Apache License 2.0 许可。
版权所有 © CloudNativePG 贡献者,CloudNativePG 为 LF Projects, LLC 的系列项目。
Barman Cloud 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/barman/blob/master/LICENSE 分发。
PGAudit 依据 https://github.com/pgaudit/pgaudit/blob/master/LICENSE 分发。
Postgres Failover Slots 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/pg_failover_slots/blob/master/LICENSE 分发。
pgvector 依据 https://github.com/pgvector/pgvector/blob/master/LICENSE 分发。
Postgres、PostgreSQL 和 Slonik 徽标 是加拿大 PostgreSQL 社区协会的商标或注册商标,经其许可使用。, autoReplaceStringTemplate: 'imageName: {{{depName}}}:{{{newValue}}}{{#if newDigest}}@{{{newDigest}}}{{/if}}', } ], packageRules: [ { matchPackageNames: ['ghcr.io/cloudnative-pg/postgresql'], matchUpdateTypes: ['major'], dependencyDashboardApproval: true, } ] }
Renovate 永远不会更改标签的兼容性部分(镜像类型和 Debian 基础,例如 __CODE_TOKEN_55__),因此升级会保持在相同的 OS 和 glibc/ICU 版本。由于 PostgreSQL 区域数据影响,切换到不同基础(例如从 __CODE_TOKEN_56__ 到 __CODE_TOKEN_57__)是手动操作。PostgreSQL 主版本更新会通过 依赖项仪表板 路由,以便人工规划和应用。要保持引用完全可重现,还可以为 CloudNativePG 镜像启用 __CODE_TOKEN_58__。如果您的仓库包含其他 YAML 清单,请将 __CODE_TOKEN_59__ 缩小到存放 __CODE_TOKEN_60__ 资源的目录,例如 __CODE_TOKEN_61__。
## 许可和版权
本软件基于 Apache License 2.0 许可。
版权所有 © CloudNativePG 贡献者,CloudNativePG 为 LF Projects, LLC 的系列项目。
Barman Cloud 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/barman/blob/master/LICENSE 分发。
PGAudit 依据 https://github.com/pgaudit/pgaudit/blob/master/LICENSE 分发。
Postgres Failover Slots 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/pg_failover_slots/blob/master/LICENSE 分发。
pgvector 依据 https://github.com/pgvector/pgvector/blob/master/LICENSE 分发。
## 商标
*Postgres、PostgreSQL 和 Slonik 徽标 是加拿大 PostgreSQL 社区协会的商标或注册商标,经其许可使用。*,
autoReplaceStringTemplate: 'imageName: {{{depName}}}:{{{newValue}}}{{#if newDigest}}@{{{newDigest}}}{{/if}}',
}
],
packageRules: [
{
matchPackageNames: ['ghcr.io/cloudnative-pg/postgresql'],
matchUpdateTypes: ['major'],
dependencyDashboardApproval: true,
}
]
}
__CODE_TOKEN_15__`
Renovate永远不会更改标签的兼容性部分(镜像类型和Debian基础,例如system-bookworm),因此升级将保持在相同的操作系统和glibc/ICU版本。由于PostgreSQL区域设置数据的影响,切换到不同的基础(例如从bookworm到trixie)是手动操作。PostgreSQL主要版本更新通过依赖项仪表板进行路由,以便人工规划和应用。要保持引用完全可重现,您还可以启用针对CloudNativePG镜像的pinDigests。如果您的仓库包含其他YAML清单,请将managerFilePatterns缩小到存放Cluster资源的目录,例如'/clusters/.*\\.yaml$/'。
## 许可和版权
本软件根据Apache License 2.0许可提供。
版权所有 © CloudNativePG贡献者,CloudNativePG是LF Projects, LLC的一个系列项目。
Barman Cloud由EnterpriseDB根据GNU GPL 3许可分发。
PGAudit根据PostgreSQL许可分发。
Postgres Failover Slots由EnterpriseDB根据PostgreSQL许可分发。
pgvector根据PostgreSQL许可分发。
## 商标
Postgres、PostgreSQL和Slonik徽标是加拿大PostgreSQL社区协会的商标或注册商标,经其许可使用。
## Debian Releases
CloudNativePG PostgreSQL 容器镜像基于官方的 __CODE_TOKEN_8__ 和 __CODE_TOKEN_9__ Debian 发行版,由 Debian 项目 维护和支持。
下表总结了相关 Debian 版本的支持生命周期,包括生命周期结束(EOL)和长期支持(LTS)日期。
| 名称 | 版本 | 发布日期 | EOL | LTS | 状态 |
| ------------------------ | :----: | :---------: | :---------: | :---------: | :--------- |
| Trixie (__CODE_TOKEN_10__) | 13 | 2025-08-09 | 2028-08-09 | 2030-06-30 | 受支持 |
| Bookworm (__CODE_TOKEN_11__) | 12 | 2023-06-10 | 2026-06-10 | 2028-06-30 | 受支持 |
| Bullseye (__CODE_TOKEN_12__) | 11 | 2021-08-14 | 2024-08-14 | 2026-08-31 | 已弃用 |
> [!IMPORTANT]
> CloudNativePG 项目对基于 Debian 的镜像提供全面支持,直至每个发行版达到其官方生命周期结束(EOL)。在 EOL 之后且长期支持(LTS)开始之前,对于已弃用的发行版(如 __CODE_TOKEN_13__)的镜像,将基于**尽力而为**的原则进行维护。如果需要在 LTS 日期之前停止支持,将在本页面发布至少**三个月的提前通知**。
## Image Types
我们目前提供并维护三种主要类型的 PostgreSQL 镜像:
* __CODE_TOKEN_14__
* __CODE_TOKEN_15__
* __CODE_TOKEN_16__
__CODE_TOKEN_17__ 和 __CODE_TOKEN_18__ 镜像均设计为可与备份插件(如 https://github.com/cloudnative-pg/plugin-barman-cloud)配合使用。
__CODE_TOKEN_19__ 镜像构建于 __CODE_TOKEN_20__ 镜像之上,还包含 Barman Cloud 二进制文件。
### Minimal Images
Minimal 镜像是轻量级的,构建于 https://hub.docker.com/_/debian 之上。它们使用由 PostgreSQL 全球开发组(PGDG)维护的 APT PostgreSQL 软件包。
这些镜像通过标签名称中包含 __CODE_TOKEN_21__ 来标识,例如:__CODE_TOKEN_22__。
> [!NOTE]
> 从 PostgreSQL 18 开始,__CODE_TOKEN_23__ 镜像**将不**包含 LLVM JIT 支持(由 __CODE_TOKEN_24__ 软件包提供,其中 __CODE_TOKEN_25__ 表示 PostgreSQL 主版本)。JIT 仅在 __CODE_TOKEN_26__ 镜像中可用。
### Standard Images
Standard 镜像是 __CODE_TOKEN_27__ 镜像的扩展,增加了以下额外功能:
- PGAudit
- Postgres Failover Slots
- pgvector
- 所有区域设置
- LLVM JIT 支持
- 对于 PostgreSQL 17 及更早版本:包含在主要 PostgreSQL 软件包中,__CODE_TOKEN_28__ 镜像中也可用
- 从 PostgreSQL 18 开始:由单独的 __CODE_TOKEN_29__ 软件包提供
Standard 镜像可通过名称中的 __CODE_TOKEN_30__ 标签识别,例如:__CODE_TOKEN_31__。
> [!NOTE]
> Standard 镜像设计为在与 CloudNativePG 一起使用时提供与旧版 __CODE_TOKEN_32__ 镜像等效的功能。要实现功能对等,您必须使用 https://github.com/cloudnative-pg/plugin-barman-cloud 来替代 __CODE_TOKEN_33__ 镜像中的原生 Barman Cloud 支持。
### System Images (deprecated)
从 2025 年 9 月开始,system 镜像基于 __CODE_TOKEN_34__ 镜像构建,并包含 Barman Cloud 二进制文件。
> [!IMPORTANT]
> __CODE_TOKEN_35__ 镜像已弃用,一旦 CloudNativePG 中对 Barman Cloud 的内置支持逐步淘汰,这些镜像将被移除。虽然只要内置 Barman Cloud 仍然可用,您仍可以使用它们,但您应计划迁移到 __CODE_TOKEN_36__ 或 __CODE_TOKEN_37__ 镜像并配合 Barman Cloud 插件,或采用其他受支持的备份解决方案。
> [!IMPORTANT] 这些标签已**弃用**,并将在 __CODE_TOKEN_38__ 镜像达到生命周期结束时**移除**。请迁移至受支持的标签格式,此类格式明确包含**镜像类型**和**发行版版本**(例如 __CODE_TOKEN_39__)。
## 镜像目录
CloudNativePG 会在 https://github.com/cloudnative-pg/artifacts/tree/main/image-catalogs中发布 CloudNativePG 的 __CODE_TOKEN_41__ 清单,每种受支持的镜像类型和操作系统版本组合对应一个目录。
> [!IMPORTANT] 如果您仍依赖旧版的 __CODE_TOKEN_42__ 和 __CODE_TOKEN_43__ 清单,请尽快迁移至新目录。这些旧版清单已弃用,并将随 __CODE_TOKEN_44__ 镜像一同移除。
## 安全性
### 构建证明
CNPG PostgreSQL 容器镜像构建时包含以下证明,以确保透明度和可追溯性:
- **软件物料清单 (SBOM)**:镜像中包含或构建过程中使用的软件制品的综合列表,采用 https://github.com/in-toto/attestation/blob/main/spec/predicates/spdx.md格式化。
- **来源证明**:详细说明镜像构建方式的元数据,遵循 SLSA Provenance 框架。
例如,要检索特定平台(如 __CODE_TOKEN_45__)的多架构镜像的 SBOM,可使用以下命令:
__CODE_TOKEN_3__
此命令以 JSON 格式输出 SBOM,提供软件组件和构建依赖项的详细视图。
### 镜像签名
__CODE_TOKEN_46__ 和 __CODE_TOKEN_47__ CloudNativePG 容器镜像使用 https://github.com/sigstore/cosign(Sigstore 生态系统中的工具)进行安全签名。签名过程通过 GitHub Actions 自动化,并利用 https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect。
令牌颁发者为 __CODE_TOKEN_48__,签名身份对应在 __CODE_TOKEN_49__ 仓库下执行的 GitHub 工作流。该工作流使用 https://github.com/marketplace/actions/cosign-installer 辅助签名过程。
要使用镜像摘要验证其真实性,可运行以下 __CODE_TOKEN_51__ 命令:
__CODE_TOKEN_4__
## CI/CD 中的镜像扫描
为进一步加强容器镜像的安全性,我们在 CI/CD 工作流中执行自动化镜像扫描。这些扫描有助于确保镜像在发布或部署前符合最佳实践且无已知漏洞:
- **Dockle**:验证容器镜像的配置最佳实践。在构建阶段运行;严重失败可能会阻止构建。
- **Snyk**:检测容器内 OS 包、库和依赖项中的漏洞。在镜像构建后运行。
## 构建镜像
有关构建 PostgreSQL 容器镜像的详细说明,请参考 BUILD.md 文件。
## 使用 Renovate 进行自动化更新
https://github.com/renovatebot/renovate 可用于自动更新各种依赖项。由于 CloudNativePG 的 __CODE_TOKEN_52__ CRD 不会被 Renovate 自动识别,必须配置自定义正则管理器。以下示例使用 JSON5;将其保存为 __CODE_TOKEN_53__,或转换键/注释以用于 __CODE_TOKEN_54__:
__CODE_TOKEN_5__
Renovate 永远不会更改标签的兼容性部分(镜像类型和 Debian 基础,例如 __CODE_TOKEN_55__),因此升级会保持在相同的 OS 和 glibc/ICU 版本。由于 PostgreSQL 区域数据影响,切换到不同基础(例如从 __CODE_TOKEN_56__ 到 __CODE_TOKEN_57__)是手动操作。PostgreSQL 主版本更新会通过 依赖项仪表板 路由,以便人工规划和应用。要保持引用完全可重现,还可以为 CloudNativePG 镜像启用 __CODE_TOKEN_58__。如果您的仓库包含其他 YAML 清单,请将 __CODE_TOKEN_59__ 缩小到存放 __CODE_TOKEN_60__ 资源的目录,例如 __CODE_TOKEN_61__。
## 许可和版权
本软件基于 Apache License 2.0 许可。
版权所有 © CloudNativePG 贡献者,CloudNativePG 为 LF Projects, LLC 的系列项目。
Barman Cloud 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/barman/blob/master/LICENSE 分发。
PGAudit 依据 https://github.com/pgaudit/pgaudit/blob/master/LICENSE 分发。
Postgres Failover Slots 由 EnterpriseDB 依据 https://github.com/EnterpriseDB/pg_failover_slots/blob/master/LICENSE 分发。
pgvector 依据 https://github.com/pgvector/pgvector/blob/master/LICENSE 分发。
## 商标
*Postgres、PostgreSQL 和 Slonik 徽标 是加拿大 PostgreSQL 社区协会的商标或注册商标,经其许可使用。*
来自真实用户的反馈,见证轩辕镜像的优质服务