2026/8/16 10:36:51

Docker 安装 PostgreSQL 14 新手教程

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:14postgres 是 Docker Official Image14 表示 PostgreSQL 14 系列。固定大版本有利于本地教程复现但补丁版本仍应以实际镜像输出为准。三、创建数据卷docker volume create postgres_data docker volume inspect postgres_dataPostgreSQL 14 的数据目录挂载到 /var/lib/postgresql/data。命名卷独立于容器但不是备份。四、启动 PostgreSQL替换示例密码后执行docker run -d --name postgres -p 5432:5432 -e POSTGRES_USERappuser -e POSTGRES_PASSWORDChangeMe_123456 -e POSTGRES_DBappdb -v postgres_data:/var/lib/postgresql/data --restart unless-stopped postgres:14POSTGRES_PASSWORD 通常是初始化必需项。POSTGRES_USER、POSTGRES_DB 和密码只在空数据目录第一次初始化时生效复用已有卷时修改环境变量不会自动修改现有用户和数据库。如果 5432 被占用可改为 15432:5432客户端端口也要改成 15432。五、确认数据库就绪docker ps --filter namepostgres docker exec postgres pg_isready -U appuser -d appdb docker logs --tail 100 postgrespg_isready 返回 accepting connections 后再连接数据库。容器状态 Up 不能单独证明 PostgreSQL 已经可以接受连接。六、进入 psqldocker 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 appdbALTER 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 ImagePostgreSQL 官方文档Docker Volumes 官方文档总结本教程完成了 PostgreSQL 14 镜像拉取、命名卷持久化、初始化、就绪检查、客户端连接、备份恢复和重启验证。密码、端口、补丁版本和备份策略必须根据实际环境人工确认。