Docker 容器和主机网络 VPN
Docker container and host network VPN
我正在尝试 运行 docker 在 MacOS 上打开 VPN 的图像(TUN 设备)。 Docker 容器可以访问互联网,但无法访问 vpn 后面的资源。 Docker 进入 VPN 网络的正确方法是什么?
我试过了
docker run --net host
使 docker 共享主机网络,但没有帮助。
主机可以访问 VPN 资源,docker 容器无法解析它们的名称..
不确定这是否是最佳解决方案。
我使用了连接到 VPN 后出现在主机上的 DNS
scutil --dns | grep 'nameserver\[[0-9]*\]'
nameserver[0] : xxx.xxx.xxx.xxx
已修改 docker 运行 命令:
docker run --cidfile="docker.pid" --dns=xxx.xxx.xxx.xxx --publish-all
现在 docker 容器可以访问 VPN 后面的资源...它有效,但我不知道它是好是坏...
遇到了类似的问题。 OP 的解决方案有效,但只需重新启动我的 docker vm:
docker-machine restart $host
灵感:https://www.reddit.com/r/docker/comments/39z4xd/when_my_docker_host_is_connected_to_vpn_i_can_no/
将主机连接到 VPN 后,我不得不重新启动 docker。
sudo systemctl restart docker
docker start {name-of-container}
对我有用的是将 docker 子网掩码从 /24 更改为 /28,然后重新启动,我现在可以在我的 vpn 网络上执行 ping、telnet 和其他操作。它说默认值为 /28,但 docker 桌面附带 /24。可能打错了,我不知道。
我确实遇到了这个问题。我尝试了此处建议的其他解决方案,但它们对我不起作用。经过大量试验和错误后,这个解决方案非常有效:
将“bip”:“192.168.1.5/24”添加到daemon.json配置文件。该文件可在 docker 桌面设置中的 docker 引擎下或 /etc/docker/daemon.json 中找到。 BIP 是网桥 IP 地址的设置,将更改 IP docker 在其子网中分配的 IP。通过更改此设置,我避免了 VPN 和 docker ip 地址之间的冲突。
重新启动 docker 守护程序。
停止所有容器。
运行 'docker 网络修剪' 删除未使用的网络。
重新启动所有容器。这将使用新的 IP 地址重新创建他们的网络。
您以后连接VPN后可能还需要重启docker。有关其他解决方案和想法,请参阅此线程:https://github.com/docker/for-mac/issues/2820
在 docker 版本 3.6.0 (67351) 运行 Mac
上有这个问题
对我有用的是结合@Sheridan Rea 和@Marco 发布的解决方案
已将 Docker 子网更改为 192.168.65.0/28。之前设置为192.168.63.0/24。单击应用并重新启动/重新启动 Docker
运行 docker network prune
运行 docker compose up
简单地更改 Docker 子网对我不起作用
现在我可以 ping VPN 后面的 IP 地址
我正在尝试 运行 docker 在 MacOS 上打开 VPN 的图像(TUN 设备)。 Docker 容器可以访问互联网,但无法访问 vpn 后面的资源。 Docker 进入 VPN 网络的正确方法是什么?
我试过了
docker run --net host
使 docker 共享主机网络,但没有帮助。
主机可以访问 VPN 资源,docker 容器无法解析它们的名称..
不确定这是否是最佳解决方案。
我使用了连接到 VPN 后出现在主机上的 DNS
scutil --dns | grep 'nameserver\[[0-9]*\]'
nameserver[0] : xxx.xxx.xxx.xxx
已修改 docker 运行 命令:
docker run --cidfile="docker.pid" --dns=xxx.xxx.xxx.xxx --publish-all
现在 docker 容器可以访问 VPN 后面的资源...它有效,但我不知道它是好是坏...
遇到了类似的问题。 OP 的解决方案有效,但只需重新启动我的 docker vm:
docker-machine restart $host
灵感:https://www.reddit.com/r/docker/comments/39z4xd/when_my_docker_host_is_connected_to_vpn_i_can_no/
将主机连接到 VPN 后,我不得不重新启动 docker。
sudo systemctl restart docker
docker start {name-of-container}
对我有用的是将 docker 子网掩码从 /24 更改为 /28,然后重新启动,我现在可以在我的 vpn 网络上执行 ping、telnet 和其他操作。它说默认值为 /28,但 docker 桌面附带 /24。可能打错了,我不知道。
我确实遇到了这个问题。我尝试了此处建议的其他解决方案,但它们对我不起作用。经过大量试验和错误后,这个解决方案非常有效:
将“bip”:“192.168.1.5/24”添加到daemon.json配置文件。该文件可在 docker 桌面设置中的 docker 引擎下或 /etc/docker/daemon.json 中找到。 BIP 是网桥 IP 地址的设置,将更改 IP docker 在其子网中分配的 IP。通过更改此设置,我避免了 VPN 和 docker ip 地址之间的冲突。
重新启动 docker 守护程序。
停止所有容器。
运行 'docker 网络修剪' 删除未使用的网络。
重新启动所有容器。这将使用新的 IP 地址重新创建他们的网络。
您以后连接VPN后可能还需要重启docker。有关其他解决方案和想法,请参阅此线程:https://github.com/docker/for-mac/issues/2820
在 docker 版本 3.6.0 (67351) 运行 Mac
上有这个问题对我有用的是结合@Sheridan Rea 和@Marco 发布的解决方案
已将 Docker 子网更改为 192.168.65.0/28。之前设置为192.168.63.0/24。单击应用并重新启动/重新启动 Docker
运行
docker network prune
运行
docker compose up
简单地更改 Docker 子网对我不起作用
现在我可以 ping VPN 后面的 IP 地址