gpt4 book ai didi

docker - 更新了 windows docker,现在它在本地主机之外不起作用

转载 作者:行者123 更新时间:2023-12-04 11:48:10 26 4
gpt4 key购买 nike

我一直在运行媒体集群一段时间没有任何问题。我将所有东西都联网到两个不同的 docker 网络中……第一个网络只是将 docker 实例桥接到本地机器,第二个网络是我用于其他媒体服务的 docker VPN 容器(我正在工作的早期版本)可以在这里找到:https://github.com/Xander-Rudolph/MediaDocker)
不过今天最奇怪的事情发生了。我为 Windows 运行了 docker update,现在 docker spool up 没有任何错误或问题,但是没有任何服务在运行 docker 的机器之外工作。通常我会在我的路由器(即桥上的 wordpress/joomla)中查看一些服务,并且它们在我的本地网络之外工作,但它们都不再工作了。我能够确认它不是 DNS A 记录,因为我能够使用我为路由器映射的 RDP 端口,并且当我在同一网络中的另一台机器上进行测试时,它无法通过内部访问服务IP(但它可以 RDP)。
任何人都知道什么可以改变来打破这个?我已经更新了我所有的 docker 镜像,甚至重建了我的 VPN 容器(在我意识到这是一个网络问题之前)。我可以采取哪些步骤来尝试解决 docker 中出现的问题以防止在 localhost 之外进行访问?
更新
我已经能够排除 docker 更新作为根本原因......我在我的笔记本电脑上升级了 docker(以前运行的版本与我的台式机相同)并且它没有同样的问题......这个配置必须是本地化到这个桌面......不知道问题是什么......将尝试在桌面上使用Linux VM而不是Windows的docker......
更新 2
在 VM 和 WSL 中进行了大量操作后,我仍然只能从本地主机访问 docker 服务,而不能访问网络上的其他机器或主机上的 IP(可能类似于以下内容: Can't access localhost via IP address)。 RDP 确实有效,因此可以访问计算机,但无法访问服务。
我不确定这是 docker 网络配置还是 windows 网络配置的结果(我在 ubuntu 20.08 上使用安装了 docker 的 WSL),但我没有看到任何突出的东西。我将删除 docker windows 的标签,但这绝对是网络问题,我怀疑这与容器在 VPN 后面运行的事实有关......虽然我不知道为什么我会能够在本地主机上访问它们,但不能在另一个虚拟机上访问 IP ...
当我跑

netstat -a -o
在 WSL 上,我可以看到 localhost 上已建立的端口... EX:
tcp        0      0 localhost:7878          localhost:37520         ESTABLISHED
但是当我查看主机(对于 wsl)时,我没有看到连接。我尝试使用 netsh 创建防火墙规则以查看是否有帮助:
netsh advfirewall firewall add rule name="TCP Port 7878" dir=in localport=7878 protocol=TCP action=allow
但它没有任何效果。
任何有关跟踪网络以查看其失败/被阻止的位置/方式的方法的建议都将非常有帮助。

最佳答案

您的问题 :“...我可以采取哪些步骤来尝试解决 docker 中出现的问题以防止在 localhost 之外进行访问?...”
为您提供故障排除帮助,首先您的主机上是否有多个网络适配器(以太网、Wi-Fi 等)。首先确保这些适配器的优先级需要按正确顺序配置,以便 Windows 网络堆栈可以正确选择网关路由。
现在,要修复此设置您的主要 Internet 连接网络适配器具有最低 InterfaceMetric 值,使用可以从提升的控制台使用这些 Powershell 命令:

Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending

请确保主机的主要 Internet 连接网络适配器具有最低 InterfaceMetric值(value)。
// Use this command to make the change for e.g. lets say your 
// primary adapter InterfaceAlias is 'Wi-Fi'
Set-NetIPInterface -InterfaceAlias 'Wi-Fi' -InterfaceMetric 3
现在进行第二步,如果您主机的主网络适配器是 bridged因为您在 Hyper-V 中有一个外部虚拟交换机设置,那么您将外部虚拟交换机设置为具有最低的 InterfaceMetric 值。
最后,确认/验证您的路由表,当您运行它时,最后一行应显示主适配器的网关地址及其 ifMetric 值):
Get-NetRoute -AddressFamily IPv4

关于docker - 更新了 windows docker,现在它在本地主机之外不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69111163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com