Docke 安装 PostgreSQL 16

5 阅读3分钟

Docker 版 PostgreSQL 16 独立部署与高可用配置指南

1. 概述与设计哲学

本指南旨在通过 Docker 容器化技术,快速、标准地在 Linux 主机上部署 PostgreSQL 16 系列数据库。该配置方案确保数据库具备高可用自愈能力(随宿主/Docker服务自启而自启)与数据安全性(目录挂载持久化),特别适用于从零配置微服务底层的数据支撑。

设计理念映射:

简洁至上 (KISS原则) :不引入繁重的主从架构脚本,采用极简的 docker run 单行定义声明环境。 事实为本: 充分考虑并解决在特殊(受限)网络环境下,默认镜像仓库拉取失败的真实客观阻碍。

2. 部署前置要求与网络连通抢修(如需)

在执行容器编排前,如果您的运行机器(常用于中国大陆节点)在拉取镜像时频繁出现超时(Timeout)或连接重置(Connection Refused),这属于典型的境外仓库访问限制,需要注入可用加速镜像源。

2.1 修改 Docker Daemon 核心配置

使用管理员权限覆写 / 创建 daemon.json 配置文档:

# 执行静默注入代理源。如果不生效,可以替换 registry-mirrors 列表中的可用地址
sudo bash -c 'echo "{"registry-mirrors": ["https://docker.m.daocloud.io", "https://dockerpull.com"]}" > /etc/docker/daemon.json'

2.2 重启并加载配置

让 Daemon 服务热加载上述新规则,并重新建立网络套接字:

sudo systemctl restart docker

3. 标准化部署步骤

3.1 固化数据目录

根据第一性原理,无论容器销毁还是更新镜像,底层核心数据绝不能丢失。应在宿主机设定专供数据库持久化的强隔离目录。

# 若按照惯例在 /plateform/ 下进行业务汇聚管理
sudo mkdir -p /plateform/postgres/data

3.2 容器参数注入与拉起

请使用一条包含所有环境注入 (-e),独立数据映射 (-v) 和自启动声明 (--restart always) 的高可用指令跑通全流程:

sudo docker run -d \
  --name postgres16 \
  --restart always \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD='YourStrongPassword' \
  -e TZ=Asia/Shanghai \
  -p 5432:5432 \
  -v /plateform/postgres/data:/var/lib/postgresql/data \
  postgres:16.3

关键参数释疑:

  • --restart always: 赋予该数据库与宿主机系统同等存活级的守护特性(即使意外崩溃也能自行拉起)。
  • -e TZ=Asia/Shanghai: 对齐应用层时间戳。
  • -v {宿主机路径}:/var/lib/postgresql/data: 保证配置与表库文件不随 Docker 生命周期而湮灭。

4. 验证与诊断机制

配置完成后,基于“事实为本”的校验是最关键的终态环节。

验证一:查看容器守护进程树

sudo docker ps --filter "name=postgres16"

应输出端口号映射与 Up(存活时长)的状态报告。

验证二:探查操作系统套接字

sudo ss -tuln | grep 5432

若主句能捕捉到 LISTEN 状态,方表示该服务已经成功渗透到主机网络栈中,可接收远端微服务(例如 pigx-register.jar)及本地工具的合法 TCP 连接。