通过 docker 连接到 vpn 的最佳实践
Best practice for connecting to a vpn though docker
我们的一些应用依赖于连接到我们的 VPN 以连接到不同的(尚未 docker 化)解决方案。
这样做的 'docker way' 是什么?在我看来,将 OpenVPN 添加到现有图像违反了 docker 理念。
从我的立场来看,我觉得创建一个 docker VPN 客户端容器最有意义。但那会是什么样子?我使用 docker 撰写,所以肯定会有一个
myContainer
- links: myVPNClient
但是我是否必须转发端口?或者必须发生什么才能使 myContainer
连接 通过 openVPN 容器。
可能最简单的解决方案是配置任何需要 vpn 的容器以使用 vpn 容器的网络命名空间。也就是说,您的 docker-compose.yml 将包含如下内容:
vpn:
image: myvpn_image
app1:
image: app1_image
net: container:vpn
使用此配置,vpn
容器和 app1
容器看到相同的网络环境。
另一种选择是询问 Jess Frazelle (jfrazelle
), who is in the habit of 。
果然,她有一个jfrazelle/dockerfiles/openvpn
项目直接暴露给宿主:
vpn:
build: .
volumes:
- .:/etc/openvpn
net: host
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- NET_ADMIN
我们的一些应用依赖于连接到我们的 VPN 以连接到不同的(尚未 docker 化)解决方案。
这样做的 'docker way' 是什么?在我看来,将 OpenVPN 添加到现有图像违反了 docker 理念。
从我的立场来看,我觉得创建一个 docker VPN 客户端容器最有意义。但那会是什么样子?我使用 docker 撰写,所以肯定会有一个
myContainer
- links: myVPNClient
但是我是否必须转发端口?或者必须发生什么才能使 myContainer
连接 通过 openVPN 容器。
可能最简单的解决方案是配置任何需要 vpn 的容器以使用 vpn 容器的网络命名空间。也就是说,您的 docker-compose.yml 将包含如下内容:
vpn:
image: myvpn_image
app1:
image: app1_image
net: container:vpn
使用此配置,vpn
容器和 app1
容器看到相同的网络环境。
另一种选择是询问 Jess Frazelle (jfrazelle
), who is in the habit of
果然,她有一个jfrazelle/dockerfiles/openvpn
项目直接暴露给宿主:
vpn:
build: .
volumes:
- .:/etc/openvpn
net: host
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- NET_ADMIN