Docker容器和主机网络VPN

Bam*_*ylo 22 vpn networking docker

我正在尝试在启用VPN的情况下在MacOS上运行docker镜像(TUN设备).Docker容器可以访问Internet,但无法访问vpn背后的资源.使Docker进入VPN网络的正确方法是什么?

我试图 docker run --net host让docker共享主机网络,它没有帮助.主机可以访问VPN资源,docker容器无法解析其名称..

小智 23

将主机连接到 VPN 后,我不得不重新启动 docker。

sudo systemctl restart docker docker start {name-of-container}


小智 11

我遇到了这个问题。我尝试了此处建议的其他解决方案,但它们对我不起作用。经过大量的尝试和错误后,这个解决方案非常有效:

\n

将 "bip": "192.168.1.5/24" 添加到 daemon.json 配置文件中。该文件可以在 docker 引擎下的 docker 桌面设置中或 /etc/docker/daemon.json 中找到。BIP 是网桥 IP 地址的设置,将更改 docker 在其子网中分配的 IP。通过更改此设置,我避免了 VPN 和 docker IP 地址之间的冲突。

\n

重新启动 docker 守护进程。

\n

停止所有容器。

\n

运行 \xe2\x80\x98docker network prune\xe2\x80\x99 以删除未使用的网络。

\n

重新启动所有容器。这将使用新的 IP 地址重新创建其网络。

\n

以后连接VPN后可能仍然需要重启docker。有关其他解决方案和想法,请参阅此线程:https ://github.com/docker/for-mac/issues/2820

\n


Bam*_*ylo 6

不知道这是否是最佳解决方案。

连接到VPN后,我获取了出现在主机上的DNS

scutil --dns | grep 'nameserver\[[0-9]*\]'
nameserver[0] : xxx.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)

修改的docker run命令:

docker run --cidfile="docker.pid" --dns=xxx.xxx.xxx.xxx --publish-all
Run Code Online (Sandbox Code Playgroud)

现在docker容器可以访问VPN背后的资源...它可以工作,但是我不知道它的好坏...


小智 5

有类似的问题。OP 的解决方案有效,但只需重新启动我的 docker vm:

docker-machine restart $host
Run Code Online (Sandbox Code Playgroud)

灵感:https : //www.reddit.com/r/docker/comments/39z4xd/when_my_docker_host_is_connected_to_vpn_i_can_no/


小智 5

在 Mac 上运行的 docker 版本 3.6.0 (67351) 上出现此问题

对我有用的是结合 @Sheridan Rea 和 @Marco 发布的解决方案

  1. 将 Docker 子网更改为192.168.65.0/28。之前设置为192.168.63.0/24。单击“应用并重新启动”/“重新启动 Docker”

  2. 跑步docker network prune

  3. 跑步docker compose up

简单地更改 Docker 子网对我来说不起作用

现在我可以 ping VPN 后面的 IP 地址