You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署PostgreSQL远程连接被拒问题求助

问题根源与解决方案

从你提供的宿主机netstat输出可以明确问题所在:

root@VM01:~# netstat -na | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN

宿主机的5432端口仅绑定在本地回环地址(127.0.0.1),意味着只有宿主机自身能访问这个端口,外部请求无法穿透到容器内的PostgreSQL服务。这是因为你启动Docker容器时,端口映射没有指定绑定到宿主机的所有网卡地址。


解决步骤

1. 停止当前PostgreSQL容器

docker stop postgres

2. 重新启动容器并修正端口映射

启动容器时,显式指定端口映射为0.0.0.0:5432:5432,让宿主机的所有网卡都监听5432端口并转发到容器:

docker run -d --name postgres -p 0.0.0.0:5432:5432 \
  -e POSTGRES_PASSWORD=<你的密码> \
  -v <你的数据卷路径>:/var/lib/postgresql/data \
  postgres:latest

注意:替换命令中的<你的密码>和<你的数据卷路径>为实际配置,保留你原本使用的其他启动参数。

3. 验证端口绑定

在宿主机再次执行netstat -na | grep 5432,正常输出应该是:

tcp        0      0 0.0.0.0:5432          0.0.0.0:*               LISTEN
tcp6       0      0 :::5432               :::*                    LISTEN

4. 测试远程连接

此时再执行远程连接命令即可正常访问:

psql -h 20.XXX.1XX.1XX -p 5432 -U <user>

若使用Docker Compose的情况

修改docker-compose.yml中的ports配置:

services:
  postgres:
    image: postgres:latest
    ports:
      - "0.0.0.0:5432:5432"  # 关键修改:绑定所有网卡
    environment:
      POSTGRES_PASSWORD: <你的密码>
    volumes:
      - <你的数据卷路径>:/var/lib/postgresql/data

然后重启服务:

docker-compose down && docker-compose up -d

内容的提问来源于stack exchange,提问作者Scouse_Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:21:36