RAGflow在windows上部署,出现了Ports are not available: exposing port TCP 0.0.0.0:5455 -> 127.0.0.1:0,实际查看端口占用却又没占用。该怎么处理?一文详解
具体报错信息如下:
PS D:\Develop\Python\ragflow\docker> docker compose -f docker-compose-gpu.yml up -d time="2025-07-28T10:27:47+08:00" level=warning msg="The \"HF_ENDPOINT\" variable is not set. Defaulting to a b lank string." time="2025-07-28T10:27:47+08:00" level=warning msg="The \"MACOS\" variable is not set. Defaulting to a blank s tring." [+] Running 5/6 ✔ Network docker_ragflow Created 0.1s ✔ Container ragflow-redis Started 1.3s ✔ Container ragflow-minio Started 1.4s ✔ Container ragflow-es-01 Started 1.2s Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5455 -> 127.0.0.1:0: listen tcp 0.0.0.0:5455: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
| 问题 | 操作 |
|---|---|
报错端口不是 3306,而是 5455 |
✅ 重点排查这个端口 |
5455 被占用 |
用 netstat + tasklist 查占用程序 |
| 没被占用但依然报错 | 多半是权限问题或系统安全策略限制 |
| 快速解决方法 | 改成别的端口,如 6545:5455 试试看 |
| Docker 权限不足 | 以管理员身份运行 Docker Desktop |
首先我查看了这个端口是否有进程在占用:
C:\Users\47053>netstat -ano | findstr :5455
没有返回任何结果
所以标明该5455端口并没有占用。
接着我采用了:以管理员身份运行 Docker Desktop
结果还是报错如上。。。
同样,我再通过如下命令查看端口3306是否被占用
C:\Users\47053>netstat -ano | findstr :3306 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 13056 TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING 13056 TCP [::]:3306 [::]:0 LISTENING 13056 TCP [::]:33060 [::]:0 LISTENING 13056
说明本地MYSQL是开启在后台运行的,端口监听的是3306
然后我又通过:WIN+R, 输入 services.msc
接着禁用掉物理机的 MYSQL服务 [占用端口3306],
然后再重新执行启动命令,还是报错和之前一样。。。
这个时候基本可以确定:
端口 5455 没被占用,报错原因多半是 系统权限或防火墙策略阻止 Docker 绑定
最后,我采用了如下方案:终于成功解决了该问题:
net stop winnat docker compose -f docker-compose-gpu.yml up -d net start winnat

在浏览器输入:
localhost:80
返回如下结果:

支持,RAGflow本地部署(GPU版)已经成功
对于最后这个命令的解释:
🔍 原因分析
这个错误:
bind: An attempt was made to access a socket in a way forbidden by its access permissions
在 Windows 下多数是 Windows NAT 驱动(WinNAT)占用端口资源或权限冲突引起的。特别是:
-
Docker 使用 Hyper-V / WSL2 网络虚拟化时
-
系统保留了一些 NAT 转发的端口(即便没被占用,也无法绑定)
✅ 你这个命令的作用:
| 命令 | 作用 |
|---|---|
net stop winnat |
停止 Windows 的 NAT 服务,释放网络端口限制 |
docker-compose up ... |
启动容器,此时端口不再被阻拦 |
net start winnat |
重启 NAT 服务,恢复正常网络行为 |
💡 进阶建议(避免下次再遇到):
-
Docker Desktop 启动时使用管理员权限
-
尽量避免映射到系统保留端口(如 5353、5455、5985 等)
-
如果频繁出现,可以执行
netcfg -d重置网络适配器(慎用,会断网并清空虚拟网卡配置)
参考资料:
https://github.com/docker/for-win/issues/9272

浙公网安备 33010602011771号