PostgreSQL是一款开源的对象关系型数据库,它功能强大、稳定性高,广泛应用于各类企业级应用和数据管理场景,支持复杂查询、事务处理及高级数据类型,其长期版本由Canonical负责维护,为用户提供持续的技术支持与更新服务,确保数据库系统在长期使用中的可靠性与安全性,是全球众多开发者和企业信赖的主流数据库解决方案之一。
收藏数: 42
下载次数: 805359
类型:
ubuntu/postgres当前的 Postgres Docker 镜像基于 Ubuntu,由 Canonical 提供,会持续接收安全更新,并自动滚动至更新的 Postgres 或 Ubuntu 版本。本仓库可免费使用,且不受每用户速率限制。
PostgreSQL 是一款功能强大的开源对象关系型数据库系统。它完全符合 ACID 标准,全面支持外键、连接、视图、触发器及存储过程(支持多种语言)。支持多数 SQL:2008 数据类型,包括 INTEGER、NUMERIC、BOOLEAN、CHAR、VARCHAR、DATE、INTERVAL、TIMESTAMP 等,还可存储图片、音频、视频等二进制大对象。提供 C/C++、Java、.Net、Perl、Python、Ruby、Tcl、ODBC 等原生编程接口,文档完善。更多信息见 PostgreSQL 官网。
!LTS
LTS 通道提供最长 5 年免费安全维护。
!ESM
ESM 通道通过 Canonical 受限仓库 提供最长 10 年客户安全维护。
| 通道标签(Channel Tags) | 支持截止时间 | 当前版本 | 架构 |
|---|---|---|---|
14-22.04_beta | 2027-04 | Ubuntu 22.04 LTS 上的 Postgres 14 | amd64、arm64、ppc64el、s390x |
12-20.04_beta | 2025-04 | Ubuntu 20.04 LTS 上的 Postgres 12.4 | amd64、arm64、ppc64el、s390x |
track_risk |
通道标签按稳定性排序:stable(稳定)、candidate(候选)、beta(测试)、edge(边缘)。更具风险的通道默认隐含可用,例如若列出 beta,则可拉取 edge;若列出 candidate,则可拉取 beta 和 edge;若列出 stable,则四个通道均可用。镜像会按 edge → beta → candidate → stable 顺序逐步发布。
若需商业再分发,或需要 ESM 通道及未列出的版本/通道,请 联系 Canonical 团队(或发送邮件至 [***已删除])。
shdocker run -d --name postgres-container -e TZ=UTC -p 30432:5432 -e POSTGRES_PASSWORD=My:s3Cr3t/ ubuntu/postgres:14-22.04_beta
启动后,可通过 localhost:30432 访问 PostgreSQL 服务。
| 参数 | 描述 |
|---|---|
-e TZ=UTC | 设置时区。 |
-e POSTGRES_PASSWORD=secret | 设置默认超级用户(postgres)的密码。注意:本地连接数据库无需密码,但外部主机(如其他容器)访问时需密码。此参数为必填项,且不可为空。 |
-e POSTGRES_USER=john | 创建具有超级用户权限的新用户,需与 POSTGRES_PASSWORD 配合使用。 |
-e POSTGRES_DB=db_test | 设置默认数据库名称。 |
-e POSTGRES_INITDB_ARGS="--data-checksums" | 传递参数至 postgres initdb 命令。 |
-e POSTGRES_INITDB_WALDIR=/path/to/location | 设置 Postgres 事务日志位置,默认存储在主数据目录(PGDATA)的子目录中。 |
-e POSTGRES_HOST_AUTH_METHOD=trust | 为 host 类型连接(所有数据库、用户、地址)设置认证方式。若传递此参数,会在 pg_hba.conf 中添加:host all all all $POSTGRES_HOST_AUTH_METHOD。 |
-e PGDATA=/path/to/location | 设置数据库文件存储位置,默认路径为 /var/lib/postgresql/data。 |
-p 30432:5432 | 将 Postgres 服务暴露至 localhost:30432。 |
-v /path/to/postgresql.conf:/etc/postgresql/postgresql.conf | 挂载本地 配置文件(示例配置见 此处)。 |
可通过添加初始化脚本自定义数据库配置,支持 *.sql、*.sql.gz 和 *.sh 文件,需放置于容器内 /docker-entrypoint-initdb.d 目录。脚本执行规则:
*.sql 文件(使用 POSTGRES_USER 权限);*.sh 脚本;*.sh 脚本。注意:若 PGDATA 目录已存在数据(非空),初始化脚本将不执行。
shdocker logs -f postgres-container
shdocker exec -it postgres-container /bin/bash
psql 客户端连接sh$ docker network create postgres-network # 创建网络 $ docker network connect postgres-network postgres-container # 连接容器至网络 $ docker run -it --rm --network postgres-network ubuntu/postgres:14-22.04_beta psql -h postgres-container -U postgres # 运行客户端
执行后输入密码(如示例中的 My:s3Cr3t/),即可登录数据库。
适用于任何 Kubernetes 环境;若未部署 Kubernetes,推荐安装 MicroK8s,并执行 microk8s.enable dns storage,再通过 snap alias microk8s.kubectl kubectl 设置 kubectl 别名。
postgres-deployment.yml 中设置 containers.postgres.image 为目标通道标签(如 ubuntu/postgres:14-22.04_beta);shkubectl create configmap postgres-config --from-file=main-config=postgresql.conf kubectl apply -f postgres-deployment.yml
部署完成后,可通过 localhost:30306 访问 Postgres 服务。
若发现镜像 bug 或需请求功能,请在以下链接提交 issue:
[***]
标题格式:postgres: <问题摘要>。提交时需包含所用镜像的 digest,可通过以下命令获取:
shdocker images --no-trunc --quiet ubuntu/postgres:<tag>
以下通道(标签)不再更新,请升级至新版本,或联系支持团队(若无法升级)。
| 通道 | 版本 | 停止维护时间 | 升级路径 |
|---|---|---|---|
| Ubuntu 21.10 上的 Postgres 13.1 | 2022-07 | ||
| Ubuntu 21.04 上的 Postgres 13.1 | 2022-01 | ||
track |
以上内容基于 Canonical 提供的官方镜像文档整理,确保安全性与可操作性。
以下是 ubuntu/postgres 相关的常用 Docker 镜像,适用于 关系型数据库、复杂查询、数据完整性 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务