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

在Docker Desktop中使用PGAdmin扩展无法连接PostgreSQL容器

PostgreSQL容器与PGAdmin4 Docker扩展连接失败排查步骤

1. 检查容器网络互通性

Docker Desktop扩展(如PGAdmin4)默认运行在docker-desktop网络,而标准创建的PostgreSQL容器通常在默认bridge网络,两个网络默认隔离:

  • 查看PostgreSQL容器的网络模式:
    docker inspect <postgres容器名或ID> | grep NetworkMode
    
  • 如果是bridge网络,可将PostgreSQL容器加入docker-desktop网络(需重启容器):
    docker network connect docker-desktop <postgres容器名或ID>
    
    之后在PGAdmin中用PostgreSQL容器名+5432端口连接(同一网络内可通过容器名解析)。

2. 验证宿主机端口映射有效性

在Windows宿主机PowerShell中测试端口是否可访问:

Test-NetConnection 127.0.0.1 -Port 54320
  • 如果测试失败,说明端口映射未生效:
    • 确认PostgreSQL容器正常监听5432端口:进入容器终端执行ss -tulpn | grep 5432,查看是否有postgres进程监听0.0.0.0:5432
    • 重启Docker Desktop,修复端口转发异常

3. 检查PostgreSQL配置限制

监听地址配置

进入PostgreSQL容器终端:

docker exec -it <postgres容器名或ID> bash

查看postgresql.conf中的监听地址:

cat /var/lib/postgresql/data/postgresql.conf | grep listen_addresses
  • 如果值为localhost,修改为*(允许所有IP访问):
    sed -i "s/listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/postgresql/data/postgresql.conf
    
    然后重启容器:docker restart <postgres容器名或ID>

访问控制列表(pg_hba.conf)

检查是否允许PGAdmin所在网络的IP段访问:

cat /var/lib/postgresql/data/pg_hba.conf
  • 添加对应网络段的访问规则(例如PGAdmin所在的docker-desktop网络通常为192.168.65.0/24):
    echo "host all all 192.168.65.0/24 scram-sha-256" >> /var/lib/postgresql/data/pg_hba.conf
    
    重启容器使配置生效。

4. 调整PGAdmin的连接地址

Docker Desktop扩展内的127.0.0.1指向自身容器,而非Windows宿主机,需使用Docker提供的宿主机内部IP:

  • 在Docker Desktop设置→Resources→Network中查看宿主机内部IP(通常为192.168.65.2)
  • 在PGAdmin中用该IP+54320端口连接,SSL Mode保持prefer

5. 排查Windows防火墙/安全软件拦截

临时关闭Windows防火墙或第三方安全软件,测试是否能连接。若恢复正常,需在防火墙中添加允许54320端口入站/出站的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:47