请教一个 wsl2 的网络配置问题

2025 年 4 月 26 日
 gibber

我是 win10 的系统 在 wls2 中安装了 ubuntu 然后又在 ubuntu 中安装了 docker 这时候要如何配置才能让 docker 中运行的容器访问 win10 运行的服务以及所在局域网上的服务呢? 有没有高人可以指点下

4085 次点击
所在节点    程序员
35 条回复
cpstar
2025 年 4 月 26 日
一方面 wsl2 的 IP 是变动的,另一方面不要皮裤套棉裤。直接安装 docker for windows ,然后使用 wsl 引擎,最后在 windows cmd/PS 中启动 docker ,并且配置好端口设置。
jacksir
2025 年 4 月 26 日
1.完全写在 wsl2 中的 docker
2.在 windows 中安装 docker desktop
3.docker desktop 中设置--resources--wsl integration (选择 wsl 环境)
4.docker desktop 中设置--docker engine (配置镜像:google 搜 docker 镜像有一个 github 仓库)
5.windows 主环境的.wslconfig 中设置:
[experimental]
networkingMode=mirrored
nickxudotme
2025 年 4 月 26 日
wsl 的网络设置成 mirror 行不行
s1461a
2025 年 4 月 26 日
网络配置麻烦,建议使用默认模式,然后用 tailscale 连接就好了。(以前用 wsl2 总是被网络配置劝退)
s1461a
2025 年 4 月 26 日
也可能是我网络基础太差
gudecatch
2025 年 4 月 26 日
```
[wsl2]
autoProxy=true
networkingMode=NAT
```

我这样的配置 在 wsl2 装的 docker engine 里面跑一个 docker ,可以通过我 host 的局域网 ip 访问

比方说我的电脑在局域网是 192.168.124.88, 我可以
```
docker run -it quay.io/curl/curl:latest 192.168.124.88:80
docker run -it quay.io/curl/curl:latest 192.168.124.112:8081

```
yrEv15Ywr4BN0pz5
2025 年 4 月 26 日
试试升级到 win11
skybig
2025 年 4 月 26 日
直接 mirror 不行吗?我就是 mirror ,然后局域网内其他设备访问容器,填写电脑 ip+暴露出的端口号就能访问了。
gibber
2025 年 4 月 26 日
@cpstar
@jacksir
看来最优解只有直接装 docker desktop 了
gibber
2025 年 4 月 26 日
@NX2023
@skybig
mirror 的配置只有 win11 22H2 以上版本支持
EchoWhale
2025 年 4 月 26 日
hyperv 装一个 linux ,可以避免绝大部分 wsl 的问题。
而且 hyperv 虚拟机运行起来也很无感,开机自动启动关机自动保存状态。
网络设置也没局限,nat 或者桥接随便你搞
gibber
2025 年 4 月 26 日
@EchoWhale hyperv 的体验应该不如 vmware 吧,我可能要选择 docker desktop 或是 vmware+ubuntu+docker 了
ThisDay
2025 年 4 月 26 日
无脑 mirrored 就是唯一解,或者你可以试试桥连,但保不准哪个版本就不支持了。
jenson47
2025 年 4 月 26 日
vmware 现在个人免费,直接用 vmware 吧,wls2 看起来不错,实际上你用 window 相关的东西去用它,它就有 window 的权限毛病,还有就是开机自动启动应用很难设置
EchoWhale
2025 年 4 月 26 日
@gibber 在使用 windows 作为宿主的前提下,我觉得还是 hyperv 好用。

既然你用 wsl ,说明你的 linux 更多的作为一种服务来用。

首先,vmware 默认情况下,开启虚拟机的会打开一个窗口没法关,除非你用命令行启动虚拟机。对无头模式的支持还没有 virtualbox 好用,比 hyperv 也差远了。
其次,hyperv 是 type 1 虚拟化,性能天然就比 vmware/virtualbox 这种 type 2 的好
最后,hyperv 安装很方便,启用一下就好了。而 vmware 免费后,下载链接你就找吧,不在博通的网站里逛个一两小时你都找不到下载链接
linlord
2025 年 4 月 26 日
@EchoWhale #15 我找到过,确实藏得够深的,而且又是注册又是干啥的
X9T4P1
2025 年 4 月 26 日
建议使用 WSL1
WSL1 是共享宿主机的网络栈,即 WSL1 共享主机 IP ,并没有自己独立的逻辑网卡,也即没有自己独享的 IP 地址。
wsl2 则是宿主机完整虚拟出来的一个完整的 Linux 虚拟机,拥有自己逻辑上独立的网卡,也即拥有属于自己的独立网络栈。网络配置起来比较费劲。
dxcqcv
2025 年 4 月 27 日
问一下我在 windows11 里用 V2ray 科学上网代理到 privoxy ,如何使 WSL2 也能使用宿主的 privoxy 代理网络
userdhf
2025 年 4 月 27 日
wsl 里的 linux 并不是完全版的 linux ,不知道你的 docker 是咋装上的,能不能正常用;
docker 官方倒是有个 docker in docker ,如果你非要在 wsl 装 docker 的话可以看看;
如果只是需求在 wsl 里使用 docker ,那么 docker desktop ,以及其他各类 docker desktop 工具都可以提供类似“嵌套虚拟化”的支持,即 win10 宿主机上安装 docker ,在设置里可以打开对 wsl 中不同发行版的支持,在 wsl 里就可以直接使用 docker 了;
你说的 docker 内网与宿主机内网互相打通的情况,我认为应该首先将你的 docker 需求搞清楚,宿主机的 docker“嵌套虚拟化”是否能满足,还是非要 dind ,如果只是 docker 需求,那么检查你的 docker 默认网络的网段,如果默认网络与宿主机网段一样,就会无法互访,需要手动改网段,我现在就是在 wsl 中的 ubuntu 中用 docker + nodejs 开发 vue 全家桶,宿主机网段的其他电脑都可以看到调试页面;
iv8d
2025 年 4 月 27 日
如果时自定义桥接网的话,需要先知道 wsl 主机的 ip ,hostname 看看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1128157

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX