解决windows上端口占用的问题

Write Comment

解决windows上端口占用的问题

用户已注销

📌 核心错误

bind: An attempt was made to access a socket in a way forbidden by its access permissions.

→ 端口 9000 无法被 Docker 绑定,原因是权限系统保留问题。


🔍 快速排查(3 步)

1️⃣ 检查端口占用

netstat -ano | findstr :9000
  • 有输出 → 杀掉对应 PID:taskkill /PID <PID> /F

2️⃣ 检查系统保留端口(Windows 特有)

netsh interface ipv4 show excludedportrange protocol=tcp
  • 如果 9000 在里面 → 端口被系统保留

3️⃣ 检查动态端口范围

netsh int ipv4 show dynamicport tcp
  • 正常范围:49152-65535

🛠️ 解决方案(按推荐度排序)

方案 操作 适用场景
换宿主机端口 docker run -p 9001:9000 最快、最稳定,推荐日常开发
管理员运行 右键 PowerShell / Docker Desktop → 管理员 临时权限问题
🔁 重启 Docker / WSL wsl --shutdown + 重启 Docker 网络组件卡死
🔁 重置 HNS 网络 net stop hnsnet start hns Docker 网络残留问题
⚠️ 删除保留端口 netsh int ipv4 delete excludedportrange ... 高级操作,重启后可能恢复
⚠️ 重置动态端口范围 netsh int ipv4 set dynamicport tcp start=49152 num=16384 动态范围被错误修改时

⚠️ 带 ⚠️ 的操作建议仅在明确知道后果时使用。


💡 一句话建议

优先换宿主机端口(如 -p 19000:9000,这是绕过 Windows 端口保留机制最稳定、最简单的方式。
如果必须用 9000,再考虑查保留端口、重启网络组件或管理员权限。


THE END
Like
Share

登录 to comment~