ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Docker 部署 PostgreSQL 数据库教程

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:latest2.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:latest2.4 官方直连方式若网络可直连 Docker Hub或已配置加速器可直接docker pull postgres:latest2.5 查看镜像是否拉取成功docker images输出类似REPOSITORY TAG IMAGE ID CREATED SIZE postgres latest 5d2f9e78c6f1 2 weeks ago 374MB3、部署 PostgreSQL以下示例均基于已下载的library/postgres:latest镜像提供三种部署方式。3.1 快速部署最简方式适合测试或学习docker run -d --name pg-test \ -e POSTGRES_PASSWORD123456 \ -p 5432:5432 \ library/postgres:latest参数说明--name pg-test容器名称-e POSTGRES_PASSWORD123456设置 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_PASSWORD123456 \ -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.ymlversion: 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 状态。进入 PostgreSQLdocker 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 TZAsia/Shanghai5.4 如何启用远程访问在postgresql.conf中修改listen_addresses *在pg_hba.conf添加host all all 0.0.0.0/0 md5然后重启容器docker restart pg-web5.5 日志文件过大挂载日志目录后使用宿主机 logrotate 管理/data/postgres/logs/*.log { daily rotate 7 compress missingok notifempty }结尾至此你已掌握基于 轩辕镜像 的 PostgreSQL 部署全流程从 镜像下载、快速运行、持久化目录挂载再到 docker-compose 企业级部署 与 问题排查。初学者可直接用「快速部署」验证数据库高级工程师则可基于「目录挂载 docker-compose」实现生产环境部署。随着使用深入你还可以探索 主从复制、备份恢复、性能优化、监控 等进阶功能让 PostgreSQL 成为业务的核心数据库引擎。
返回列表