当前位置: 首页 > news >正文

【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 左右)。例如:

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 镜像

docker pull postgres:15

2. 运行 PostgreSQL 15(Slim 版)

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
  • 连接方式:
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找到容器卷的挂载点
docker volume inspect pg_data

输出类似

[
    {
        "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

相关文章:

  • Day110 若依-基础
  • 微信小程序中使用WebSocket通信
  • 【2025】基于springboot+vue的高考志愿填报系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • Chrome 134 版本开发者工具(DevTools)更新内容
  • WordPress分类目录绑定二级域名插件
  • WordPress上传图片时显示“未提供数据”错误
  • 常⻅框架漏洞--ThinkPHP
  • Python虚拟环境:从入门到实战指南
  • vscode设置console.log的快捷输出方式
  • 量化研究--小果聚宽交易系统上线高速服务器,提供源代码
  • 『 C++ 』原生字符串:让字符串处理更轻松
  • 0基础学前端----移动WEB开发之flex布局DAY15
  • 单片机 - 串行通信 并行通信、接口类型及常见通信协议详细解析
  • 文件上传的小点总结(2)
  • 用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)
  • 【leetcode hot 100 35】搜索插入位置
  • ZIP_STORED和ZIP_LZMA没有compresslevel参数!
  • html css js网页制作成品——HTML+CSS+js迪奥口红网站网页设计(4页)附源码
  • 智能汽车图像及视频处理方案,支持视频实时拍摄特效能力
  • Docker-Compose部署 EasySearch 异常问题排查
  • “世界茶树原产地”打通全产业链,茶文旅融合助力西双版纳高质量发展
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 加快推进科技服务业高质量发展,九部门联合发文
  • 中国旅游日|上天当个“显眼包”!体验低空经济的“飞”凡魅力
  • 出走的苏敏阿姨一路走到了戛纳,这块红毯因她而多元
  • 马上评|科学红毯,让科学家成为“最亮的星”