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

Docker 安装 PostgreSQL 14 新手教程

草稿状态:本文仅保存到 CSDN 草稿箱,待人工检查和实测后再决定是否发布。

摘要

本文使用 Docker 官方 postgres 镜像运行 PostgreSQL 14,完成命名卷持久化、数据库初始化、就绪检查、psql 连接、客户端连接、备份恢复和重启验证。示例密码只作为占位符,不能直接用于生产环境。

一、前置准备

docker version docker info

确认 Docker 已启动,主机 5432 端口可用,并为数据库卷和备份文件预留空间。已有 PostgreSQL 服务时,不要直接复用 postgres 容器名和数据卷。

二、拉取官方镜像

docker pull postgres:14 docker image inspect postgres:14

postgres 是 Docker Official Image,14 表示 PostgreSQL 14 系列。固定大版本有利于本地教程复现,但补丁版本仍应以实际镜像输出为准。

三、创建数据卷

docker volume create postgres_data docker volume inspect postgres_data

PostgreSQL 14 的数据目录挂载到 /var/lib/postgresql/data。命名卷独立于容器,但不是备份。

四、启动 PostgreSQL

替换示例密码后执行:

docker run -d --name postgres -p 5432:5432 -e POSTGRES_USER=appuser -e POSTGRES_PASSWORD=ChangeMe_123456 -e POSTGRES_DB=appdb -v postgres_data:/var/lib/postgresql/data --restart unless-stopped postgres:14

POSTGRES_PASSWORD 通常是初始化必需项。POSTGRES_USER、POSTGRES_DB 和密码只在空数据目录第一次初始化时生效;复用已有卷时,修改环境变量不会自动修改现有用户和数据库。

如果 5432 被占用,可改为 15432:5432,客户端端口也要改成 15432。

五、确认数据库就绪

docker ps --filter "name=postgres" docker exec postgres pg_isready -U appuser -d appdb docker logs --tail 100 postgres

pg_isready 返回 accepting connections 后再连接数据库。容器状态 Up 不能单独证明 PostgreSQL 已经可以接受连接。

六、进入 psql

docker exec -it postgres psql -U appuser -d appdb

在 psql 中执行:

SELECT version(); \l \dt \q

七、创建测试表并插入数据

示例表包含项目常用的备注、删除状态、创建修改人和时间字段:

CREATE TABLE demo_user ( id BIGSERIAL PRIMARY KEY, user_name VARCHAR(100) NOT NULL, remark VARCHAR(500), delete_status SMALLINT NOT NULL DEFAULT 0 CHECK (delete_status IN (0, 1)), create_user_no BIGINT, modified_user_no BIGINT, create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, modified_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); INSERT INTO demo_user (user_name, remark) VALUES ('alice', 'Docker PostgreSQL test'); SELECT id, user_name, create_time FROM demo_user WHERE delete_status = 0;

modified_time 不会自动像某些 MySQL 定义那样更新,业务更新时应显式维护,或创建触发器。

八、使用 Navicat 或 DBeaver 连接

项目
主机127.0.0.1
端口5432
用户名appuser
密码启动容器时设置的密码
数据库appdb

若使用 15432:5432,客户端端口填写 15432。

九、备份与恢复

备份:

docker exec postgres pg_dump -U appuser -d appdb > .\appdb-backup.sql

恢复:

Get-Content .\appdb-backup.sql | docker exec -i postgres psql -U appuser -d appdb

备份文件应保存到独立位置,并定期验证恢复,不要只依赖 Docker 卷。

十、重启验证

docker exec postgres psql -U appuser -d appdb -c "SELECT count(*) FROM demo_user;" docker restart postgres docker exec postgres pg_isready -U appuser -d appdb docker exec postgres psql -U appuser -d appdb -c "SELECT count(*) FROM demo_user;"

两次数量一致,说明容器重启后数据仍能读取。

十一、修改密码和创建数据库

已有用户修改密码:

docker exec -it postgres psql -U appuser -d appdb
ALTER ROLE appuser WITH PASSWORD '新的强密码'; CREATE DATABASE otherdb; \q

十二、常见问题

修改 POSTGRES_PASSWORD 没有生效

数据卷已经初始化,环境变量不会重新初始化数据库。使用 ALTER ROLE 修改密码,或在确认无数据后删除并重新创建卷。

连接失败

依次检查端口映射、容器日志和 pg_isready,不要先删除卷。

删除容器后数据还在吗

只删除容器、保留 postgres_data 时,数据通常仍在。删除卷会永久删除数据库文件。

十三、卸载

只删除容器:

docker rm -f postgres

确认数据不再需要后:

docker volume rm postgres_data docker image rm postgres:14

十四、官方资料

  • PostgreSQL Docker Official Image
  • PostgreSQL 官方文档
  • Docker Volumes 官方文档

总结

本教程完成了 PostgreSQL 14 镜像拉取、命名卷持久化、初始化、就绪检查、客户端连接、备份恢复和重启验证。密码、端口、补丁版本和备份策略必须根据实际环境人工确认。

http://www.jsqmd.com/news/1404208/

相关文章:

  • 抖音无水印下载工具实测手记:从安装到批量下载,一篇讲透
  • Android Studio无法识别设备:从ADB原理到实战排查全解析
  • 秦皇岛古驰包包回收就来毓典奢品汇15369396611闲置贵重物品回收指南 - mazhaoyun11
  • 2026年长沙市知名的财税服务企业哪家靠谱 - 米諾
  • Windows DPI缩放不一致怎么办?SetDPI命令行工具一次讲透
  • NanoClaw架构设计:微服务粒度划分与高效协同的工程实践
  • 深入 Oh My Pi(omp):终端里最能打的 AI 编程 Agent
  • 地质系出身、没上过数学课,他靠 AI 干翻了 22 年数学猜想
  • leetcode 54螺旋矩阵
  • 化州窗帘选购攻略|本地靠谱软装门店怎么选?杨梅君君窗帘实测 - 小布之大布
  • 无需下载直接用!2026 网页 AI 修图网站实测对比,ImageGood 占位靠前 - 米諾
  • Arduino智能小车入门:从硬件连接到代码实践,打造你的第一个机器人项目
  • 彻底卸载VMware等复杂软件:从原理到实践的完整清理指南
  • 抖音内容采集效率翻倍指南:douyin-downloader批量去水印下载实战
  • EndNote与WPS/Office关联全攻略:从原理到实战避坑指南
  • 湘潭正规除甲醛公司汇总:2026本地优选推荐 - 专注室内空气检测治理
  • 2026 鹰潭房屋漏水实测科普:雨季渗水反复修不好,如何避开防水行业大坑 - 宅仕达
  • VMware vCenter Server 9.1.0.0300 - 集中管理 vSphere 环境
  • Maven 3.6.3 安装配置全攻略:从零搭建Java项目构建环境
  • 2026西安防水补漏哪家靠谱 亲测三家维修公司真实避坑分享 - 冠盾建筑修缮
  • C语言运算符优先级与结合性详解:从基础概念到实战避坑指南
  • 把整本小说搬进手机离线读:番茄小说下载器快速上手全攻略
  • frp内网穿透实战:从原理到部署,实现远程访问与端口映射
  • 2026年北京口碑好GEO公司推荐:泛海明心为何上榜? - 米諾
  • VSCode Java开发实战:从环境配置到Spring Boot项目调试全攻略
  • 大模型幻觉的成因与应对:从RAG到四层架构的实战指南
  • 抖音批量下载工具 douyin-downloader 保姆级教程:复制一条链接,备份一个博主的全部作品
  • 2026近期国内专业靠谱GEO优化品牌精选推荐
  • 微信聊天记录导出一站式指南:用WeChatMsg把旧对话完整留住
  • YOLO+无监督学习:攻克工业质检样本少、类别不平衡、成像不全、迭代慢四大难题