news 2026/8/29 18:16:23

Docker 部署 PostgreSQL 数据库教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 部署 PostgreSQL 数据库教程

PostgreSQL是一款开源免费的高级关系型数据库管理系统,始于1986年,由全球开发者社区持续维护迭代,兼具悠久历史与前沿特性。它严格遵循ACID事务原则,确保数据读写的一致性与可靠性,同时突破传统关系型数据库局限,支持多模型存储——既能兼容标准SQL,又可高效处理JSON、数组、地理空间(GIS)等复杂数据类型。

其核心优势在于极强的扩展性:可通过自定义函数、存储过程及丰富插件(如PostGIS用于地理信息分析)拓展功能,适配从中小型应用到企业级海量数据场景(如电商交易、日志分析、科学计算)。此外,它采用多版本并发控制(MVCC)优化高并发读写性能,内置数据加密、访问控制等安全机制,是平衡功能深度、稳定性与运维友好性的主流开源数据库优选。

1、查看 PostgreSQL 镜像详情

你可以在 轩辕镜像 中找到 PostgreSQL 镜像页面:
👉 postgres Docker Image Overview | PostgreSQL database...

在镜像页面中,你会看到多种拉取方式,下面逐一说明如何下载与部署。

2、下载 PostgreSQL 镜像

2.1 使用轩辕镜像登录验证方式拉取

docker pull xxx.xuanyuan.run/library/postgres:latest

2.2 拉取后改名

docker pull xxx.xuanyuan.run/library/postgres:latest \ && docker tag xxx.xuanyuan.run/library/postgres:latest library/postgres:latest \ && docker rmi xxx.xuanyuan.run/library/postgres:latest

说明

  • docker pull:从轩辕镜像加速拉取
  • docker tag:重命名为 library/postg xxx.xuanyuan.runres:latest,保持与官方一致
  • docker rmi:删除临时标签,避免重复占用空间

2.3 使用免登录方式拉取(推荐)

免登录方式无需配置账户,新手可直接使用。

docker pull xxx.xuanyuan.run/library/postgres:latest

带重命名的完整命令:

docker pull xxx.xuanyuan.run/library/postgres:latest \ && docker tag xxx.xuanyuan.run/library/postgres:latest library/postgres:latest \ && docker rmi xxx.xuanyuan.run/library/postgres:latest

2.4 官方直连方式

若网络可直连 Docker Hub,或已配置加速器,可直接:

docker pull postgres:latest

2.5 查看镜像是否拉取成功

docker images

输出类似:

REPOSITORY TAG IMAGE ID CREATED SIZE postgres latest 5d2f9e78c6f1 2 weeks ago 374MB

3、部署 PostgreSQL

以下示例均基于已下载的library/postgres:latest镜像,提供三种部署方式。

3.1 快速部署(最简方式)

适合测试或学习:

docker run -d --name pg-test \ -e POSTGRES_PASSWORD=123456 \ -p 5432:5432 \ library/postgres:latest

参数说明

  • --name pg-test:容器名称
  • -e POSTGRES_PASSWORD=123456:设置 postgres 超级用户密码(必填)
  • -p 5432:5432:将宿主机端口映射到容器 5432 端口

验证方式

docker exec -it pg-test psql -U postgres

若成功进入 psql,说明部署完成。

3.2 挂载目录(推荐方式,适合生产环境)

持久化数据与配置,避免容器删除后数据丢失。

第一步:创建宿主机目录
mkdir -p /data/postgres/{data,conf,logs}
第二步:启动容器并挂载目录
docker run -d --name pg-web \ -e POSTGRES_PASSWORD=123456 \ -p 5432:5432 \ -v /data/postgres/data:/var/lib/postgresql/data \ -v /data/postgres/logs:/var/log/postgresql \ library/postgres:latest
目录说明
宿主机目录容器目录说明
/data/postgres/data/var/lib/postgresql/data数据持久化目录
/data/postgres/logs/var/log/postgresql日志目录
/data/postgres/conf/etc/postgresql(可选)配置目录(需扩展)

3.3 docker-compose 部署(适合企业级场景)

统一管理配置与容器,支持一键启动。

第一步:编写 docker-compose.yml
version: '3' services: postgres: image: library/postgres:latest container_name: pg-service restart: always environment: POSTGRES_USER: admin POSTGRES_PASSWORD: 123456 POSTGRES_DB: mydb ports: - "5432:5432" volumes: - ./data:/var/lib/postgresql/data - ./logs:/var/log/postgresql
第二步:启动服务
docker compose up -d

补充说明

  • 默认会自动创建数据库 mydb 和用户 admin
  • 修改配置/网页可直接操作挂载目录

4、结果验证

查看容器状态

docker ps

应看到 postgres 容器 Up 状态。

进入 PostgreSQL

docker exec -it pg-service psql -U admin -d mydb

创建测试表

CREATE TABLE test(id SERIAL PRIMARY KEY, name TEXT); INSERT INTO test(name) VALUES('Hello Xuanyuan!'); SELECT * FROM test;

输出结果即表示数据库可用。

5、常见问题

5.1 无法连接数据库?

  • 确认 防火墙或安全组 放行 5432 端口
  • 检查数据库密码是否正确
  • 执行docker logs 容器名查看错误原因

5.2 如何持久化配置?

官方镜像会在/var/lib/postgresql/data存储数据,建议挂载宿主机目录。如需自定义配置,可拷贝默认配置:

docker exec -it pg-web bash cat /var/lib/postgresql/data/postgresql.conf

复制出来后放到宿主机目录再挂载回去。

5.3 数据库时区不正确?

启动时指定:

-e TZ=Asia/Shanghai

5.4 如何启用远程访问?

  1. postgresql.conf中修改:
    listen_addresses = '*'
  2. pg_hba.conf添加:
    host all all 0.0.0.0/0 md5
  3. 然后重启容器:
    docker restart pg-web

5.5 日志文件过大?

挂载日志目录后,使用宿主机 logrotate 管理:

/data/postgres/logs/*.log { daily rotate 7 compress missingok notifempty }

结尾

至此,你已掌握基于 轩辕镜像 的 PostgreSQL 部署全流程:从 镜像下载、快速运行、持久化目录挂载,再到 docker-compose 企业级部署 与 问题排查。

初学者可直接用「快速部署」验证数据库,高级工程师则可基于「目录挂载 + docker-compose」实现生产环境部署。随着使用深入,你还可以探索 主从复制、备份恢复、性能优化、监控 等进阶功能,让 PostgreSQL 成为业务的核心数据库引擎。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 18:16:00

字节跳动面经全解析:从算法到系统设计的一线避坑指南

热的烫手的字节跳动面经:一线工程师的真实复盘与避坑指南 最近字节跳动的面试热度确实高得离谱,身边不少同事和朋友都在刷题、约面、复盘。我正好在上一轮求职周期里把字节的流程完整走了一遍,从投递简历到业务面、HR面,再到最终拿…

作者头像 李华
网站建设 2026/8/29 18:14:11

数学建模竞赛核心算法:图论、最短路与最小生成树实战指南

1. 项目概述:从算法理论到实战应用的桥梁最近在整理书柜,翻出了这本《数学建模算法与应用》,看到书页上密密麻麻的笔记,尤其是第4到第6章关于图论、最短路和最小生成树的部分,感触颇深。这几章可以说是数学建模竞赛中&…

作者头像 李华
网站建设 2026/8/29 18:14:05

Python自动化测试指南—Mock与单元测试的深入应用

软件开发进程里, 自动化测试属于确保代码质量以及稳定性极其关键的一个环节。存在一门编程语言, 它具备灵活性且强大,能提供丰富的工具以及库用以支撑自动化测试。有自动化测试其中涉及结合Mock与单元测试, 利用其进行测试, 目的在于提升代码的可靠性以及可维护性, …

作者头像 李华
网站建设 2026/8/29 18:13:17

MFC对话框界面美化实战:从Win32自绘到现代化改造

简介:在Windows桌面开发领域,图形用户界面(GUI)的渲染机制基于Win32 API的消息驱动模型。系统通过发送WM_PAINT等消息触发控件绘制流程,而界面美化的核心原理在于干预这一默认绘制过程。通过控件子类化(Sub…

作者头像 李华
网站建设 2026/8/29 18:11:16

知识蒸馏效果不稳定?先用PROOF-Gen优化数据生成流程再训练

知识蒸馏是模型压缩里最常用的手段之一:用一个大模型的预测结果去训练一个小模型,让它在参数量小很多的情况下逼近大模型的效果。但在实际项目中,很多人把蒸馏当成一个损失函数问题来做,反复调温度系数、改 KL 散度权重&#xff0…

作者头像 李华
网站建设 2026/8/29 18:11:08

光耦原理与工程设计:隔离电路参数选型与AD实战避坑指南

1. 光耦不是“黑盒子”,是电力电子系统里最值得花时间搞懂的隔离元件光耦,全称光电耦合器,在电力电子基础元器件这个圈子里,它从来就不是个可有可无的配角。我干硬件设计这十多年,从开关电源、工业PLC模块、电机驱动板…

作者头像 李华