docker - WSL2 和 Docker Desktop for windows 的网络问题
问题描述
TL;博士
在使用 WSL2 和 Docker Desktop for Windows 时,我似乎经常遇到网络问题。
通常,我可以通过查找 WSL2 实例的 IP 地址并从容器内部引用该 IP 地址,从 Docker 容器内部访问从 WSL2 实例(WSL2 中的“分发”)启动的端口。但是今天由于某种原因这不起作用。当我遇到 WSL2+DockerDesktop 问题时,我已经习惯了重新启动,但现在我想终于明白到底出了什么问题。
我很确定,当我稍后重新启动时,一切都会好起来的。
你知道如何调试这个东西吗?
我还有一个公司的 Forticlient VPN 可能会搞砸。但在这件事上我别无选择...... ;-(
细节
我通过以下方式找到 IP:
WSL2:» ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
bond0 DOWN
dummy0 DOWN
sit0@NONE DOWN
eth0 UP 172.26.183.209/20 fe80::215:5dff:fef9:cc5c/64
所以 WSL2 机器的 IP 地址是172.26.183.209
.
所以现在我有一个 Web 服务器在我的 WSL2 进程中监听端口 8080,它可以通过http://172.26.183.209:8080nmap
访问,正如 WSL2 所确认的curl
那样:
WSL2@~» nmap -Pn -p 8080 172.26.183.209
Starting Nmap 7.80 ( https://nmap.org ) at 2020-12-23 16:15 CET
Nmap scan report for ubuntu-wsl2 (172.26.183.209)
Host is up (0.000045s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 0.02 seconds
WSL2@~» curl http://172.26.183.209:8080 > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
但是,从容器内部:
[root@0467b7ef17e7 /]# nmap -Pn -p 8080 172.26.183.209
Starting Nmap 7.70 ( https://nmap.org ) at 2020-12-23 15:12 UTC
Nmap done: 1 IP address (0 hosts up) scanned in 0.43 seconds
[root@0467b7ef17e7 /]# curl http://172.26.183.209:8080
curl: (7) Failed to connect to 172.26.183.209 port 8080: No route to host
它也可以在docker-desktop
WSL2 容器内部工作:
WSL2@~» wsl.exe -d docker-desktop wget http://172.26.183.209:8080
Connecting to 172.26.183.209:8080 (172.26.183.209:8080)
Connecting to host.docker.internal:8180 (192.168.0.202:8180)
index.html 100% |********************************| 7308 0:00:00 ETA
只是不是从容器内部。直到我重新启动。AAAARRRRRHHHHHHHHHHHHHHHH :-)
一个提示 - 对我来说没有意义的东西 - 来自容器内部:
[root@0467b7ef17e7 /]# ping 172.26.183.209
PING 172.26.183.209 (172.26.183.209) 56(84) bytes of data.
From 172.26.0.2 icmp_seq=1 Destination Host Unreachable
From 172.26.0.2 icmp_seq=2 Destination Host Unreachable
From 172.26.0.2 icmp_seq=3 Destination Host Unreachable
^C
--- 172.26.183.209 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 202ms
pipe 4
是什么172.26.0.2
?唔...
网络设置:
(我修改了以太网 3 的 IP 地址,因为它在公司网络中)
WSL2@~» ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
bond0 DOWN
dummy0 DOWN
sit0@NONE DOWN
eth0 UP 172.26.183.209/20 fe80::215:5dff:fef9:cc5c/64
WSL2@~» ipconfig.exe
Windows IP Configuration
Ethernet adapter Ethernet 3:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::405f:b7d2:70b4:b405%19
IPv4 Address. . . . . . . . . . . : 10.14.11.17
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 10.14.11.18
Ethernet adapter Ethernet 4:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::7cd1:5641:ac65:7004%15
IPv4 Address. . . . . . . . . . . : 192.168.0.202
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
Ethernet adapter VirtualBox Host-Only Network:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::f06d:9785:cff5:2ad0%6
IPv4 Address. . . . . . . . . . . : 192.168.225.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Wireless LAN adapter Wi-Fi:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Local Area Connection* 7:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Local Area Connection* 10:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Ethernet 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Bluetooth Network Connection:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::c507:3c2b:62d:7270%39
IPv4 Address. . . . . . . . . . . : 172.26.176.1
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
WSL2@~» route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.26.176.1 0.0.0.0 UG 0 0 0 eth0
172.26.176.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
解决方案
您是否尝试过仅重新启动容器而不是整个机器?这听起来像是容器失去了对其网络配置的跟踪。容器的很多东西都是在启动时编写的,并且从未更新或没有持续更新。
推荐阅读
- python - 如果我执行以下代码,我会收到类型错误,错误是 TypeError: 'float' object cannot be mapped as an integer
- html - Mat-Table 区域中的 CSS 问题
- flutter - Flutter 总是需要热重载
- php - .htaccess 和第二个和更多参数的问题
- scala - 在 Scala 中按名称传递
- angular - 包含自定义组件 html 的角度管道
- linux - 从文本文件中查找内容与某行匹配的文件
- javascript - 用钩子反应功能组件 - 从用 reducer 编写的函数中获取响应
- sql - 是否有一个 SQL 函数可以在 Date 列中填充缺失的日期并用以前的值填充 B 列中的相同记录?(PostgresSQL)
- html - 如何以角度更改列表框中第一个元素的颜色?