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 就属于系统保留端口。

相关推荐
运维全世界2 小时前
Slurm集群搭建实战踩坑:存储节点无RAID、跨节点GPU无法读取数据彻底解决
linux
帷幕落秋2 小时前
进程服务与文件描述符
linux·运维·面试
用户209583592302 小时前
谛听(Diting)开发W7:检出率从 27% 到 100%,规则包从 19 条扩到 27 条
linux
钱栈up2 小时前
耳机音效不对,我顺手查了系统更新,结果挖出个崩溃了整天的服务
windows·shell
帷幕落秋2 小时前
信号、Ctrl 组合键与进程状态
linux·运维·面试
xiao77mwq2 小时前
Wireshark 在 Windows 上没法按进程抓包,我补了一条路
windows
大能嘚吧嘚2 小时前
Debian13系统安装
linux
qetfw2 小时前
grep 文本筛选:匹配、反选与退出状态验证
linux·shell
就像楞次定律2 小时前
【Linux 学习记之一】日常生产力工具与终端流的高效闭环实践(1)
linux
奔跑的架构师2 小时前
[A-51]ARMv9/v8-SCMI系统架构
linux·arm开发·架构·系统架构·arm