通过 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

它使用 TUN (not TAP) interface.