1、创建宿主机挂载文件夹

# 自定义目录,可自行修改路径
mkdir -p /data/postgres/{data,conf}
  • /data/postgres/data:数据库数据持久化目录
  • /data/postgres/conf:postgresql.conf、pg_hba.conf 配置目

2、拉取镜像

docker pull postgres:15

3、先临时启动容器,拷贝默认配置文件到宿主机

首次需要把容器内原始配置导出到宿主机,后续永久挂载修改:

# 临时运行pg容器(用完可删除)
docker run -d --name pg-tmp \
-e POSTGRES_PASSWORD=123456 \
postgres:15

# 拷贝两份核心配置文件到宿主机conf目录
docker cp pg-tmp:/var/lib/postgresql/data/postgresql.conf /data/postgres/conf/
docker cp pg-tmp:/var/lib/postgresql/data/pg_hba.conf /data/postgres/conf/

# 删除临时容器
docker rm -f pg-tmp

4、修改配置文件(开启远程访问)

(1)编辑 postgresql.conf

vim /data/postgres/conf/postgresql.conf

修改下面参数:

# 监听所有网卡,允许任意地址访问
listen_addresses = '*'
# 按需调整最大连接数
max_connections = 200

(2)编辑 pg_hba.conf(客户端访问权限控制)

vim /data/postgres/conf/pg_hba.conf

文件末尾添加(允许所有 IP 密码登录):

# IPv4 任意地址通过密码认证
host    all             all             0.0.0.0/0            scram-sha-256
# IPv6
host    all             all             ::/0                 scram-sha-256

5、正式启动 PostgreSQL 容器(永久挂载)

docker run -d \
--name postgres \
--restart always \
-p 15432:5432 \
-v /data/postgres/data:/var/lib/postgresql/data \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=Seeway@2026 \
-e PGDATA=/var/lib/postgresql/data \
postgres:15

参数说明:

  • --restart always:开机自启
  • -p 5432:5432:端口映射,外部访问宿主机 5432 端口
  • 两个配置文件只读挂载,数据目录持久挂载
  • 账号:postgres 密码:123456(自行修改)

注意:需要将上面修改的配置文件,复制进/data/postgres/data目录,然后重启容器

6、常见运维命令

# 查看日志
docker logs -f postgres

# 重启pg(修改配置后需重启生效)
docker restart postgres

# 进入容器内部
docker exec -it postgres psql -U postgres

7、连接测试

(1)宿主机本地连接

# 安装客户端后连接
psql -h 127.0.0.1 -p 15432 -U postgres

(2)外网 Navicat/DBeaver 远程连接

连接参数:
主机:服务器公网 IP
端口:5432
数据库:postgres
用户:postgres
密码:123456

更多推荐