Docker 容器无法通过 VPN 进行通信
Docker container is unable to communicate over the VPN
我有一个由以下人员创建的简单容器:
docker 运行 -it --rm -d -p 8080:80 --name web nginx
这是在我家里的笔记本电脑上。我已连接到我们的公司 VPN。
我需要我的容器访问的资源是通过 VPN 访问的。
我最初的想法是这不应该成为问题。当流量离开我的容器时,它只会使用我的笔记本电脑路由并确定去哪里——这似乎并非如此。
我正在 运行ning wsl2 容器,我将 traceroute 添加到我的容器中,当我添加到 traceroute 时,我看到:
# traceroute -I cypdelk01.ayz.network
traceroute to cypdelk01.ayz.network (10.1.35.160), 30 hops max, 60 byte packets
1 172.17.0.1 (172.17.0.1) 0.249 ms 0.202 ms 0.192 ms
2 10.1.0.1 (10.1.0.1) 3152.748 ms !H 3152.713 ms !H 3152.707 ms !H
流量似乎永远不会离开容器。这是一个可以解决的问题吗?
我是否 运行 在 windows 上使用 Docker 桌面遇到了一些限制?
我在不止一台电脑上试过这个,结果完全一样。
容器与互联网通信没有问题,但似乎无法访问 vpn 上的任何内容。
我的 google 搜索没有找到任何有用的东西。
有人知道这是否可以修复吗?
原来不是什么神秘的网络问题,只是一个简单的IP冲突。 Docker 桌面的 kubernetes 实现使用 10.1.0.0/16 作为默认 IP 范围。这可以通过更改文件来更改:
%APPDATA%\Docker\Roaming\cni-default.conflist.
mac 和 linux 存在相同的文件,但路径不同。缺点是您可能需要在升级 docker 桌面后再次更改此文件,这种情况经常发生。
我有一个由以下人员创建的简单容器:
docker 运行 -it --rm -d -p 8080:80 --name web nginx
这是在我家里的笔记本电脑上。我已连接到我们的公司 VPN。 我需要我的容器访问的资源是通过 VPN 访问的。 我最初的想法是这不应该成为问题。当流量离开我的容器时,它只会使用我的笔记本电脑路由并确定去哪里——这似乎并非如此。 我正在 运行ning wsl2 容器,我将 traceroute 添加到我的容器中,当我添加到 traceroute 时,我看到:
# traceroute -I cypdelk01.ayz.network
traceroute to cypdelk01.ayz.network (10.1.35.160), 30 hops max, 60 byte packets
1 172.17.0.1 (172.17.0.1) 0.249 ms 0.202 ms 0.192 ms
2 10.1.0.1 (10.1.0.1) 3152.748 ms !H 3152.713 ms !H 3152.707 ms !H
流量似乎永远不会离开容器。这是一个可以解决的问题吗? 我是否 运行 在 windows 上使用 Docker 桌面遇到了一些限制? 我在不止一台电脑上试过这个,结果完全一样。 容器与互联网通信没有问题,但似乎无法访问 vpn 上的任何内容。
我的 google 搜索没有找到任何有用的东西。
有人知道这是否可以修复吗?
原来不是什么神秘的网络问题,只是一个简单的IP冲突。 Docker 桌面的 kubernetes 实现使用 10.1.0.0/16 作为默认 IP 范围。这可以通过更改文件来更改:
%APPDATA%\Docker\Roaming\cni-default.conflist.
mac 和 linux 存在相同的文件,但路径不同。缺点是您可能需要在升级 docker 桌面后再次更改此文件,这种情况经常发生。