【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15

企业常用 PostgreSQL 版本推荐

1. PostgreSQL 14(最常见,稳定)
  • 目前许多企业仍在使用 PostgreSQL 14,因为它在性能、并发处理、JSON 支持等方面做了较多优化,同时又非常稳定。
  • 官方支持时间2026 年 11 月 之前提供更新和安全修复。
  • 适用于:大多数企业生产环境。
2. PostgreSQL 15(新特性但较新)
  • 提供更好的 MERGE 语句支持(类似 SQL Server 的 UPSERT),性能优化更强。
  • 适用于愿意升级到较新版本,但又不想冒 PostgreSQL 16 可能存在的新版本风险的企业。
  • 官方支持时间2027 年 11 月
3. PostgreSQL 13(部分老企业仍在使用)
  • 仍然有许多老企业使用 PostgreSQL 13,因为它稳定,且比 12 版本有更好的 JSON 处理能力和查询优化。
  • 官方支持时间2025 年 11 月
  • 适用于:已有 PostgreSQL 13 生产环境的企业,短期内不会升级。
4. PostgreSQL 16(最新,但企业少用)
  • 2023 年 9 月发布,优化了查询并行性、工作负载管理,但因为较新,企业采用率还不高。
  • 适用于:希望使用最新特性的企业,但不适用于保守的生产环境。

企业推荐版本总结

版本 适用场景 官方支持时间 企业使用率
PostgreSQL 14 最佳选择,稳定,性能好 2026 年 11 月 ⭐⭐⭐⭐⭐
PostgreSQL 15 适合需要新功能但不想冒险 2027 年 11 月 ⭐⭐⭐⭐
PostgreSQL 13 兼容性好,部分企业仍用 2025 年 11 月 ⭐⭐⭐
PostgreSQL 16 最新,但企业采用较少 2028 年 11 月 ⭐⭐

企业中常用的 PostgreSQL 镜像类型

docker pull PostgreSQL 镜像时,常见的选择有:

  1. postgres:latest(最新稳定版)
  2. postgres:<版本号> (指定版本,例如 postgres:14
  3. postgres:<版本号>-alpine (轻量级 Alpine 版本,例如 postgres:14-alpine

1. Alpine 版(postgres:<版本>-alpine

Alpine 镜像是什么?

-alpine 版本基于 Alpine Linux,它是一个极小的 Linux 发行版(基础镜像通常只有 5MB 左右)。例如:

sh 复制代码
docker pull postgres:14-alpine

与标准版 postgres:14 相比:

  • 体积更小 (Alpine 版本约 20MB,标准版约 200MB+
  • 启动更快,但功能有所取舍

Alpine 版会缺少什么?

  • 缺少 GNU 库(glibc) :Alpine 使用 muslbusybox,一些依赖 glibc 的应用可能无法运行。
  • 某些扩展不兼容
    • 一些 PostgreSQL 插件(如 postgis)可能无法直接安装,需要手动编译。
    • 可能缺少一些 libpq 相关的工具(可以通过 apk add postgresql-client 安装)。
  • 性能略有下降
    • 由于 Alpine 采用 musl 而不是 glibc,某些高并发/高负载场景下的数据库操作可能比标准版稍慢(但差距不大)。

2. 企业环境应该选择哪种镜像?

镜像版本 体积 适用场景 是否推荐企业使用
postgres:latest 大(约 200MB+) 开发/测试/生产 ✅ 推荐
postgres:14 大(约 200MB+) 企业生产环境(稳定) ✅ 强烈推荐
postgres:14-alpine 小(约 20MB) 轻量化部署,资源受限环境(如 IoT) ⚠️ 不推荐用于企业生产
postgres:14-slim 适中(约 50MB) 一般生产环境,无需扩展支持 ✅ 可选
postgres:14-bullseye 适中 需要 Debian 兼容环境 ✅ 推荐(更兼容)

企业生产环境建议使用 postgres:14postgres:14-slim,因为它们兼容性更好,功能完整。


3. 什么时候适合用 Alpine 版?

✅ 适用场景:

  • 资源受限的 小型应用,如嵌入式设备、CI/CD 测试环境、Docker Swarm、Kubernetes 轻量化部署。
  • 你确定你的应用 不依赖 PostgreSQL 扩展 (如 postgis)。
  • 需要 极小的镜像,减少带宽和存储占用。

❌ 不适用场景:

  • 生产环境(特别是企业级数据库,稳定性比大小更重要)。
  • 需要 复杂插件支持 ,如 postgisplpython 等。
  • 高负载 的 OLTP/OLAP 系统(可能因 musl 影响而性能略有下降)。

适用于学习场景的pgsql选用----ubuntu22.04

1. 拉取 postgres:15 镜像

sh 复制代码
docker pull postgres:15

2. 运行 PostgreSQL 15(Slim 版)

sh 复制代码
docker run -d \
  --name my_postgres \
  -e POSTGRES_USER=root \
  -e POSTGRES_PASSWORD=123456 \
  -e POSTGRES_DB=db \
  -p 5432:5432 \
  -v pg_data:/var/lib/postgresql/data \
  postgres:15
  • 连接方式:
sh 复制代码
docker exec -it my_postgres psql -U root -d db

-v pg_data:/var/lib/postgresql/data 参数理解

位置 作用
pg_data 宿主机上的 Docker 容器卷 (实际存储 PostgreSQL 数据)通常是/var/lib/docker/volumes/pg_data/
/var/lib/postgresql/data 容器内部的数据库存储目录
-v pg_data:/var/lib/postgresql/data 将容器卷 pg_data 绑定到容器 /var/lib/postgresql/data,实现数据持久化,确保在你docker因为某原因关了之后能在docker的卷里pg_data找到备份
  • 一般在linux中,先用docker volume inspect找到容器卷的挂载点
bash 复制代码
docker volume inspect pg_data

输出类似

json 复制代码
[
    {
        "Name": "pg_data",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/pg_data/_data",
        "Scope": "local"
    }
]
  • Mountpoint 指向 /var/lib/docker/volumes/pg_data/_data,这说明 真实的数据存放在宿主机的这个目录中。

可以用ls查看是否有数据,

复制代码
ls /var/lib/docker/volumes/pg_data/_data

https://github.com/0voice

相关推荐
笨鸟贤妃8 小时前
Ubuntu 22.04 安装 Docker & Compose 最新最简单完整指南
ubuntu·docker·compose
感哥8 小时前
Docker存储
docker
要一起看日出8 小时前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__8 小时前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
速易达网络8 小时前
ASP.NET MVC 连接 MySQL 数据库查询示例
数据库·asp.net·mvc
灞波儿奔波儿灞9 小时前
Lucky STUN穿透结合群晖NAS实现docker下transmission监听端口动态更新
docker·群晖·stun·lucky
玉衡子9 小时前
MySQL基础架构全面解析
数据库·后端
梦中的天之酒壶9 小时前
Redis Stack扩展功能
数据库·redis·bootstrap
GreatSQL9 小时前
GreatSQL分页查询优化案例实战
数据库
Leo.yuan10 小时前
不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
大数据·数据库·数据仓库·信息可视化·spark