docker - Windows 容器无法访问互联网,但 Linux 容器可以 - 在主机上激活 V

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

所以我研究了一段时间并尝试遵循:

  • 在 powershell 中检查适配器优先级:
    Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending



  • 据说,主适配器应该具有最低的度量值。在我的情况下是以太网,这似乎很好。 https://github.com/docker/for-win/issues/2760
  • 使用 --dns=8.8.8.8 标志运行图像。没有解决问题。
  • 我进入了 Hyper-V 管理器的虚拟交换机设置。我将名为“nat”的开关设置为“外部网络”。好吧,我的容器在那之后获得了互联网连接。但它自动禁用了 VPN 适配器,所以这是不对的。
  • 将 vEthernet(nat) 的 IPv4 地址和 DNS 设置为自动。也没有帮助。
  • 重新安装容器工具、Hyper-V 和 Docker。没有成功。
  • 尝试旧版本的 Docker-for-Windows。没有成功。

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

    我的网络适配器:



    我的 Docker 设置是默认设置。





    Hyper-V 虚拟交换机:



    vEthernet(nat) IPv4 设置:



    vEthernet(DockerNAT) IPv4 设置:



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



    ipconfig/all 在我的主机上:




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

    编辑:

    由于那里没有实际问题:

    我该如何解决这个问题?

    最佳答案

    我只是想通了这一点:
    1)。关注:https://docs.docker.com/machine/drivers/hyper-v/#example :
    2)。启动 hyper v(可能需要启用):https://docs.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"
    
    显示:
            "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
    

    关于docker - Windows 容器无法访问互联网,但 Linux 容器可以 - 在主机上激活 VPN 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341873/

    相关文章:

    c# - 如何在C#中将位图转换为intptr

    docker - TeamCity 构建代理 : Error registering on the

    user-interface - 在Win32应用程序中使用opencv进行图像显示

    visual-studio-2008 - OpenCV图像从RGB转换为HSV阈值难题

    opencv - cvWarpPerspective,具有转换矩阵,如何提取四点?

    visual-studio-2008 - CBlobResult令人费解。使用Visual C++2

    image - OpenCV模板匹配

    opencv - 相机和投影仪校准

    docker - 创建 Docker 自己的 node_modules

    visual-c++ - Visual c++ OpenCV 2.1 contains()