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

Ubuntu系统下Docker部署PostgreSQL与pgAdmin后访问连接重置问题求助

PostgreSQL与pgAdmin容器连接重置问题排查与解决

问题背景

在Ubuntu系统中已完成PostgreSQL和pgAdmin镜像下载并启动容器,启动命令如下:

PostgreSQL启动命令

sudo docker run --name some-postgres -e POSTGRES_PASSWORD=XYZ_PW -p 5432:5432  -d postgres 

pgAdmin启动命令

sudo docker run --name pgadmin --link some-postgres:postgres -p 80:80 -d fenglc/pgadmin4

已确认两个容器均正常运行,但访问localhost或localhost:80时出现连接重置错误。以下是docker inspect pgadmin输出的NetworkSettings信息:

"NetworkSettings": {
"Bridge": "",
"SandboxID": "fb4f3dcf1eed267055060b945ba8fb4bff372873d1cc179a24c934c883c1d100",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5050/tcp": null,
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "80"
},
{
"HostIp": "::",
"HostPort": "80"
}
]
},
"SandboxKey": "/var/run/docker/netns/fb4f3dcf1eed",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "879f386a86712d2699373ef8667b07984db337e7267a2381da69cdbc5405251e",
"Gateway": "XXXX.XX.0.1",
"GlobalIPv6Address": ""
}

排查与解决步骤

1. 检查pgAdmin容器内部服务状态

进入pgAdmin容器,检查80端口是否被正常监听:

sudo docker exec -it pgadmin /bin/bash
netstat -tulpn | grep 80

如果未看到pgAdmin相关进程监听端口,重启容器尝试修复:

sudo docker restart pgadmin

2. 检查主机端口占用

确认Ubuntu主机80端口是否被其他进程占用:

sudo lsof -i :80

若有占用,更换pgAdmin映射端口(例如改为8080):

sudo docker stop pgadmin && sudo docker rm pgadmin
sudo docker run --name pgadmin --link some-postgres:postgres -p 8080:80 -d fenglc/pgadmin4

之后访问localhost:8080测试。

3. 检查防火墙规则

查看ufw防火墙是否允许80端口入站流量:

sudo ufw status

若未开放,添加端口允许规则:

sudo ufw allow 80/tcp

如果是远程服务器,同步检查云服务商安全组是否开放80端口。

--link为Docker旧特性,改用自定义网络提升连接稳定性:

# 创建自定义网络
sudo docker network create pg-network
# 重启PostgreSQL容器加入网络
sudo docker stop some-postgres && sudo docker rm some-postgres
sudo docker run --name some-postgres --network pg-network -e POSTGRES_PASSWORD=XYZ_PW -p 5432:5432 -d postgres
# 重启pgAdmin容器加入网络
sudo docker stop pgadmin && sudo docker rm pgadmin
sudo docker run --name pgadmin --network pg-network -p 80:80 -d fenglc/pgadmin4

此时pgAdmin可通过容器名some-postgres直接访问PostgreSQL服务。

5. 查看容器日志定位错误

通过日志获取pgAdmin启动失败的具体原因:

sudo docker logs pgadmin

根据日志中的错误提示(如依赖缺失、配置错误)针对性修复。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:01:07