必须通过WSL2桥接方案实现:启用WSL2 systemd,创建br0桥接网卡并绑定物理网卡,修改Docker daemon.json指向br0,再用自定义bridge网络启动容器并指定局域网IP,使容器获得真实局域网IP并被其他设备直连访问。

在Win11上让Docker容器获得局域网中可被其他设备直接访问的独立实体IP,必须绕过默认NAT模式,通过自定义桥接网络+手动IP分配实现;Windows Docker Desktop不支持原生Macvlan,需借助WSL2子系统配合Linux桥接方案。
确认WSL2后端并启用systemd
打开PowerShell(管理员),执行:wsl -l -v 确认当前发行版为 WSL2 模式;若为WSL1,先运行 wsl --set-version 2 升级;然后编辑该发行版的 /etc/wsl.conf,添加以下两行:
[boot]
systemd=true
重启WSL:wsl --shutdown → 再次启动终端。这一步必须完成,否则后续桥接脚本无法自动加载网络服务。
创建Linux侧桥接网卡br0
进入WSL2终端(如Ubuntu),运行:
sudo ip link add name br0 type bridge
sudo ip addr add 192.168.1.200/24 dev br0
sudo ip link set br0 up
注意:192.168.1.200 必须与宿主机物理网卡(如Ethernet)在同一子网且不冲突;【不可用192.168.1.1或宿主机当前IP】,否则会导致宿主机断网。
将物理网卡eth0(实际名请用ip link show确认)接入桥接:
sudo ip link set eth0 master br0
这步会短暂中断WSL网络,属正常现象。
配置Docker使用br0作为默认桥
在WSL2中编辑Docker守护进程配置文件:
sudo nano /etc/docker/daemon.json
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
写入以下内容(请严格按JSON格式,末尾无逗号):
{
"bridge": "br0",
"fixed-cidr": "192.168.1.0/24",
"default-gateway": "192.168.1.1"
}
保存后重启Docker服务:
sudo systemctl restart docker
此时新启动的容器将自动从192.168.1.0/24网段获取IP,并直连局域网——但需注意:Docker默认bridge驱动仍走NAT,此处生效的是我们手动接管的底层桥接设备br0,因此容器IP将真实暴露于局域网。
启动带指定局域网IP的容器
方法一:命令行指定IP(推荐)
docker run -d --name web --network bridge --ip 192.168.1.150 -p 80:80 nginx
方法二:使用自定义bridge网络(更安全)
第一步:创建显式桥接网络并绑定br0
docker network create -d bridge --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o com.docker.network.bridge.name=br0 my-br0-net
第二步:启动容器时强制使用该网络
docker run -d --name api --network my-br0-net --ip 192.168.1.151 python:3.9-slim python3 -m http.server 8000
第三步:在局域网内任一设备浏览器访问 http://192.168.1.151:8000 即可直达容器服务。

















