Jeb*_*buz 6 networking docker windows-subsystem-for-linux
我已经运行媒体集群一段时间了,没有出现任何问题。我将所有内容联网到两个不同的 docker 网络中...第一个网络只是将 docker 实例桥接到本地计算机,第二个网络是一个 docker VPN 容器,我用于其他媒体服务(我正在工作的早期版本)可以在这里找到: https: //github.com/Xander-Rudolph/MediaDocker)
然而,最奇怪的事情今天发生了。我运行了 Windows 的 docker 更新,现在 docker spools 没有任何错误或问题,但是没有任何服务在运行 docker 的机器之外工作。通常我会查看路由器中的几个服务(即桥上的 wordpress/joomla),它们在我的本地网络之外工作,但它们都不再工作了。我能够确认它不是 DNS A 记录,因为我能够使用为路由器映射的 RDP 端口,并且当我在同一网络中的另一台计算机上测试时,它无法通过内部访问服务IP(但可以 RDP)。
任何人都知道可以改变什么来打破这个?我已经更新了所有 docker 镜像,甚至重建了我的 VPN 容器(在我意识到这是一个网络问题之前)。我可以采取哪些步骤来尝试解决 docker 中出现的问题以防止从本地主机外部进行访问?
更新
我已经能够排除 docker 更新作为根本原因...我在我的笔记本电脑上升级了 docker(之前运行与我的台式机相同的版本)并且它没有相同的问题...此配置必须是本地化到这个桌面...不知道问题是什么...将尝试桌面上的 Linux VM 而不是 Windows 的 docker...
更新2
在虚拟机和 WSL 中进行了大量的修改之后,我仍然只能从本地主机访问 docker 服务,而不能从网络上的其他计算机或通过主机上的 IP 访问(可能类似于以下内容:无法通过 IP 地址访问本地主机)。RDP 确实有效,因此计算机可以访问,但服务无法访问。
我不确定这是否是 docker 网络配置或 Windows 网络配置的结果(我在 ubuntu 20.08 上使用安装有 docker 的 WSL),但我没有看到任何突出的情况。我将删除 docker windows 的标签,但这绝对是网络问题,我怀疑这与容器在 VPN 后面运行这一事实有关......尽管我不知道为什么我会这样做能够在本地主机上访问它们,但不能访问另一个虚拟机上的IP...
当我跑步时
netstat -a -o
Run Code Online (Sandbox Code Playgroud)
在 WSL 上我可以看到本地主机上已建立的端口... EX:
tcp 0 0 localhost:7878 localhost:37520 ESTABLISHED
Run Code Online (Sandbox Code Playgroud)
但是当我查看主机(对于 wsl)时,我没有看到连接。我尝试使用 netsh 创建防火墙规则,看看是否有帮助:
netsh advfirewall firewall add rule name="TCP Port 7878" dir=in localport=7878 protocol=TCP action=allow
Run Code Online (Sandbox Code Playgroud)
但没有任何效果。
任何有关跟踪网络以查看其故障/被阻止的位置/方式的方法的建议都将非常有帮助。
经过多次尝试使用下面的参考资料后,我仍然一无所获。@derple 的推荐并没有让我有任何进展(因为我在 wsl 中),但他链接的文章有人说他们切换到 Linux 并卸载并重新安装了 docker 桌面......并且出于某种愚蠢的原因,这是有效的。
这些是我修复它所采取的具体步骤:
奇怪的是, get-netipinterface 和 get-netroute 看起来与我卸载并重新安装之前完全相同,但现在似乎一切正常......我不知道为什么上面的方法有效......