WSL Docker 端口明明空闲,但就是绑不上端口

WSL Docker 端口明明空闲,但就是绑不上端口

在 Windows 上使用 WSL2 + Docker 时,容器映射 MQTT 常用的 1883 端口,可能会遇到绑定失败的问题。奇怪的是,使用 netstat 或 lsof 检查时都看不到进程占用端口,但 Docker 仍然无法完成端口映射。

这通常不是端口被某个进程占用,而是 Windows 将该端口放进了 Excluded Port Range(保留端口范围)。保留范围内的端口在系统层面不可供 Docker 使用,因此检查进程时看起来是空闲的,实际却无法绑定。

解决方案

下面以 1883 端口为例。重启 NAT 服务会短暂中断 WSL 和 Docker 的网络连接,请先停止依赖这些网络的容器,并使用管理员身份打开命令提示符或 PowerShell。

重启 NAT 服务

执行以下命令:

cmd 复制代码
net stop winnat
net start winnat

然后重新尝试启动容器并映射 1883 端口。

查看系统保留端口范围

如果重启 NAT 服务后仍然无法绑定,执行:

cmd 复制代码
netsh interface ipv4 show excludedportrange protocol=tcp

检查输出的起止端口范围中是否包含 1883。例如,某个范围是 1800-1899 时,1883 就属于系统保留端口。

相关推荐
律宏阔1 小时前
Windows 禁用联想笔记本所有 Lenovo 后台服务
windows
律宏阔1 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴1 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千1 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei371 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei371 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei371 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW1 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW2 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux