windows11 wsl2 + docker desktop + ubuntu22.04
docker 拉取的 ubuntu 镜像是在原有 ubuntu22.04 的基础上自己 apt install
了一些常用工具的镜像。
通过 docker 创建 ubuntu 容器 ubuntu_b
,以下是其网络配置信息:
在宿主机中(wsl2 环境) ping ubuntu_b
的 ip ( 172.17.0.3 )无法 ping 通,但 ping 其网关( 172.17.0.1 )却 ping 的通.
宿主机( 172.20.166.206 ) ping ubuntu_b
容器:
同时用 tcpdump 抓包:
宿主机 ping 网关能通:
但在 ubuntu_b
中 ping 宿主机能够 ping 通:
在 ubuntu_b
中 ping 另一台 ubuntu
容器 ubuntu_c
( 172.17.0.2 )也能够 ping 通,并且两者相互 ping 的通。
自己查看了一些信息,也问了 deepseek ,主要还是说防火墙问题,但以上宿主机和 ubuntu
容器的防火墙都是默认接收所有流量的状态(这里贴的是 ubuntu_c
的,ubuntu_b
没有配置 root 权限无法查看,不过不影响问题的发生,ubuntu_c
同样有以上的问题):
求大佬解答一下!!!
1
ThreeSidedCoin 1 天前
桥接网络?
|
2
zcion OP @ThreeSidedCoin 是的,网络模式用的是默认设置
|
3
hwdq0012 1 天前
wsl 默认是 nat
docker 默认也是 nat docker 运行在 wsl 中(如果设置了 docker 和 wsl2 集成的话 host pin 子网 ubuntu ping 不通 是正常的 子网的 ubuntu ping Host 能 ping 能 ping 通,说明子网路由正确 wsl -l -v 可以看到一个 docker desktop 的实例, 你是在 docker desktop 里操作的吗 如果是,我觉得 wsl ping 不通 contianer 是因为 docker 和 wsl 都是 hyper v 的 平级的虚拟网络子网 |
4
zcion OP @hwdq0012 wsl -l -v 默认用的是 ubuntu22.04 的,并没有用 docker-desktop.
docker-desktop 里也是设置的 ubuntu22.04 distros (settings->Resources->WSL integration). 不理解为啥说宿主机 ping 不通容器 ip 是正常,我的理解是,两者都能够 ping 通容器网关(172.17.0.1),那正常来说外部也应该 ping 的通内部 求解答 |
5
hwdq0012 1 天前
|
6
zcion OP @hwdq0012
在 ubuntu22.04 里操作的,当时安装 wsl2 用的这个  windows 中 tracert 的结果:  附带 wsl2 中 traceroute 的结果:  突然想起来,因为之前的某些缘故重新卸载在安装过 wsl 过,之后它的网关就有两个了,在 windows 中 ipconfig 的结果:  感谢大佬解答 |
7
yinmin 1 天前
docker 28.0 的 iptables 防火墙规则改了,默认不允许 ip forward 到容器里了。
你试试在 docker host 里加一条防火墙规则: iptables -I DOCKER-USER -d 172.17.0.0/24 -j ACCEPT |
8
yinmin 1 天前
我可能知道原因了,你的 windows 路由有问题。另外:172.30.0.1 不是你的 docker ,是你宽带电信营运商的某台服务器。你完全关闭 docker 和 wsl2 ,或者换一台别的电脑,然后 ping 172.30.0.1 也能 ping 通。
|
![]() |
9
bingfengfeifei 1 天前
没用过这种环境,你可以先在 wsl2 环境中 排查下。
使用 ip route 命令看下路由表发出来,然后 ip neigh 命令看看 arp 是否通了,MAC 获取到没。 然后看下 cat /proc/sys/net/ipv4/ip_forward 看下 ip 转发开了没 以及看下 ip link ,docker 用的什么接口 看下 brctl show 网桥 |
10
laminux29 1 天前
wsl2 + docker desktop ,你这 Debuff 拉满了。VMware Workstation 也有网络问题。
想要稳定,建议找台大内存的 x99 洋垃圾,安装 PVE 。 |
![]() |
11
XuHuan1025 1 天前
wsl2 遇到过很多问题 还是 vmwarre 好
|
12
512357301 1 天前 via Android
[两者都能够 ping 通容器网关(172.17.0.1),那正常来说外部也应该 ping 的通内部]
你这很明显有点想当然了,你的容器在 nat 内部,宿主机怎么可能访问到它。。。,除非开启端口转发,否则 nat 网络无解,别说 docker 了,虚拟机也是这样的逻辑啊。 另外去复习或者学习下网络拓扑的入门知识吧。 再另外,建议用虚拟机搞 docker 吧,wsl 坑挺多,不如虚拟机。 |
![]() |
13
siweipancc 1 天前 via iPhone
……你要是不懂网络可以换成 mirror 网络模式
|