Windows 容器无法访问互联网,但 Linux 容器可以访问互联网 - VPN 客户端在主机上处于活动状态

2023-11-25

我的主机上安装了 Stonesoft VPN-Client 和 Docker-for-Windows。我的 Windows 容器似乎无法解析任何主机(甚至是 www.google.com)。然而我的 Linux 容器工作得很好。当我禁用网络适配器列表中的 VPN 适配器时,Windows 容器可以再次访问互联网。但我需要它们在 VPN 激活的情况下工作。

所以我研究了很长一段时间并尝试遵循以下内容:

  1. 在powershell中检查适配器优先级: 获取 NetIPInterface -AddressFamily IPv4 |排序对象-属性接口度量-降序

enter image description here

据说,主适配器应该具有最低的度量值。在我的例子中,这是以太网,看起来不错。https://github.com/docker/for-win/issues/2760

  1. 使用 --dns=8.8.8.8 标志运行图像。没有解决问题。
  2. 我进入了 Hyper-V 管理器的虚拟交换机设置。我将名为“nat”的开关设置为“外部网络”。好吧,我的容器在那之后就连接上了互联网。但它会自动禁用 VPN 适配器,所以这是不对的。

  3. 将 vEthernet(nat) 的 IPv4 地址和 DNS 设置为自动。也没有帮助。

  4. 重新安装容器工具、Hyper-V 和 Docker。没有成功。

  5. 尝试旧版本的 Docker-for-Windows。没有成功。

以下是有关我的环境的一些信息:

我的网络适配器:

enter image description here

我的 Docker 设置是默认的。

enter image description here

enter image description here

Hyper-V 虚拟交换机:

enter image description here

vEthernet(nat) IPv4 设置:

enter image description here

vEthernet(DockerNAT) IPv4 设置:

enter image description here

vEthernet(默认交换机)IPv4 设置:

enter image description here

ipconfig /all 在我的主机上:

enter image description here enter image description here

我希望这会有所帮助,并且有人可以回答这个问题。它已经困扰我很长一段时间了。

EDIT:

因为那里没有实际问题:

我该如何解决这个问题?


我刚刚想明白了:

1)。跟随:https://docs.docker.com/machine/drivers/hyper-v/#example:

2)。启动hyper v(可能需要启用):https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

3)。然后在hyper v中创建外部虚拟交换机。选择您的 WiFi 适配器。 (应该在 VPN 打开或关闭的情况下工作)。

4).重启。

5)。启动容器并附加到新网络。

docker network ls
docker network connect "John Windows Container Switch" win1809
docker network inspect "John Windows Container Switch"

shows:

        "Containers": {
            "b8c4ae07761fdf082602f836654013b8d83a717cce9156880a80c7542d855842": {
                "Name": "win1809",
                "EndpointID": "e84652fc93fd1fa2970c3bdcad513d8928fc35823a9f8cf0e638926b6091a60c",
                "MacAddress": "00:15:5d:fb:77:dd",
                "IPv4Address": "",
                "IPv6Address": ""

6). docker exec -it win1809 powershell

ping www.google.com

Pinging www.google.com [172.217.10.36] with 32 bytes of data:
Reply from 172.217.10.36: bytes=32 time=19ms TTL=118
Reply from 172.217.10.36: bytes=32 time=18ms TTL=118
Reply from 172.217.10.36: bytes=32 time=18ms TTL=118
Reply from 172.217.10.36: bytes=32 time=14ms TTL=118
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 容器无法访问互联网,但 Linux 容器可以访问互联网 - VPN 客户端在主机上处于活动状态 的相关文章

随机推荐

  • 为什么 O(n) 等于 O(2n)

    我知道 O N 本质上等于 O cN 其中 c 某个常数 但如果 N c 这不是 O N 2 吗 随着 c 的增加 这是否成立 或者是否存在某种正式的限制 If N c then c不是恒定的 因此 情况从来都不是这样
  • 应用“自动”数字格式/数字格式重置

    是否可以通过 GAS 以编程方式应用 自动 数字格式 我的问题是 当我编写数字列时 表格似乎尝试应用适当的格式 但有时会出错 也就是说 特定的小整数 有时为 1 将被格式化为日期 范围被写在一个myRange setValues 方法 我看
  • List 保证插入顺序吗?

    假设列表中有 3 个字符串 例如 1 2 3 然后我想重新排序它们以将 2 放置在位置 1 例如 2 1 3 我正在使用这段代码 将indexToMoveTo设置为1 listInstance Remove itemToMove listI
  • Flask(带有 Flask-RESTful)不解析 JSON 有效负载

    I m creating a frontend in Angular and the backend in Flask with the RESTful extension By default Angular likes to send
  • 如何在 Oracle PL/SQL where 子句中使用变量

    我似乎无法让变量在 Oracle PL SQL where 子句中工作 我有 Microsoft SQL Server 背景 这很容易 例如 执行类似以下操作所需的所有步骤是什么 declare var int set var 1 sele
  • 尝试理解/确定基本的 Git 工作流程

    我一直在读这个流行文件一遍又一遍地尝试起草我自己的 git 工作流程 我想我已经明白了 但我还是有点失落 这是我目前的理解 我们有两个分支机构将始终保持活跃 Master 这是我将推送实际部署到我的生产服务器并由我的用户使用的代码的地方 开
  • 从父目录导入脚本

    如何导入位于父目录中的模块 python 文件 两个目录都有一个 init py文件 但我仍然无法从父目录导入文件 在此文件夹布局中 脚本 B 尝试导入脚本 A Folder A init py Script A Folder B init
  • 使用javascript上下滚动iframe

    是否可以使用按键或 JavaScript 从父窗口滚动 iframe 窗口 iframe 内容来自另一个域 与父窗口不同 由于 iframe 内容来自另一个域 因此出于安全原因您将无法更改它的 DOM 尽管您可以使用箭头键滚动它 但当您激活
  • 如何在Eclipse中查看Javadoc?

    我正在使用第三方库 我已将其包含到我的项目中 它包含应用程序的类 但没有源代码或 Javadoc 正如预期的那样 将鼠标悬停在导入的对象上不会显示 javadoc Note This element neither has attached
  • Android .aidl 中的单向声明是否保证该方法将在单独的线程中调用?

    我正在为 Android 手机设计一个客户端 服务器应用程序框架 我对 Java 和 Android 都很陌生 但对一般编程 特别是线程编程并不陌生 有时我的服务器和客户端将位于同一进程中 有时它们将位于不同的进程中 具体取决于具体的用例
  • 在基本构造函数中使用 lambda 表达式的极端情况

    在我们正在构建的框架中 我们需要以下模式 public class BaseRenderer Func
  • 通过 JavaScript 打开应用程序 (iOS/Android),并回退重定向到 App/Play 商店(2016 版)

    给定 网站 iOS 和 Android 应用程序 注册 urlscheme myapp 目标 在网站上显示一个指向已安装应用程序的 iOS Android 设备的链接 单击该链接应打开应用程序并调用特定逻辑 由应用程序处理 本质上类似于苹果
  • 将表单中的标签与输入旁边对齐

    我有非常基本且已知的表单场景 我需要正确对齐输入旁边的标签 但是我不知道该怎么做 我的目标是标签与右侧的输入旁边对齐 这是所需结果的图片示例 为了您的方便并澄清我现在所拥有的内容 我做了一个小提琴 http jsfiddle net WX5
  • Dispatcher.Invoke 之后应用程序冻结

    我的这个应用程序在调用任何控件的dispatcher invoke 时都会冻结 当我在单选按钮 网格 图像等中调用调度程序时 应用程序冻结但没有给出错误 请帮忙 谢谢 我调用线程 Method RunClient private void
  • Knockout 和 jQuery Mobile:将数据绑定到选择列表

    我在同一个项目中同时使用 Knockout 版本 2 0 和 jQuery Mobile 版本 1 0 1 问题在于将数据绑定到选择列表 jQuery Mobile 以看似选定的值和实际列表是单独元素的方式呈现选择列表 这是通过执行来修复的
  • 什么是索引单子?

    What is 索引单子这个单子的动机是什么 我读到它有助于跟踪副作用 但类型签名和文档并没有引导我到任何地方 有什么例子可以说明它如何帮助跟踪副作用 或任何其他有效的例子 一如既往 人们使用的术语并不完全一致 有各种受单子启发但严格来说并
  • Python 用函数的输出替换字符串模式

    我有一个Python字符串 比如说The quick red fox jumps over the lame brown dog 我正在尝试替换以 以及以单词作为参数的函数的输出 def my replace match return ma
  • 从另一个java类调用静态方法

    我最近从 PHP 工作转向 Java 工作并有一个查询 想要强调一下我是Java的初学者 本质上 我正在文件 A 具有 A 类 中工作 并且想要引用文件 B B 类 中保存的静态方法 使用 A 类时是否需要引用文件 B 我正在沿着PHP中的
  • 如何在 Windows 上取消 select() 中的等待

    在我的程序中 有一个线程 接收线程 负责从 TCP 套接字接收请求 并且有许多线程 工作线程 负责处理接收到的请求 处理请求后 我需要通过 TCP 发送答案 这是一个问题 我想在用于接收数据的同一个线程中发送 TCP 数据 该线程接收数据后
  • Windows 容器无法访问互联网,但 Linux 容器可以访问互联网 - VPN 客户端在主机上处于活动状态

    我的主机上安装了 Stonesoft VPN Client 和 Docker for Windows 我的 Windows 容器似乎无法解析任何主机 甚至是 www google com 然而我的 Linux 容器工作得很好 当我禁用网络适