通过docker连接到vpn的最佳实践

一些应用程序我们依靠连接到我们的VPN来连接到不同的(不是docker化的)解决scheme。

这样做的“docker方式”是什么? 在我看来,将OpenVPN添加到现有的图像是违反docker的理念。

从我站在我觉得,创build一个dockerVPN客户端容器是最有意义的。 但是,这将是什么样子? 我使用docker撰写,所以肯定会有一个

myContainer - links: myVPNClient 

但我会不得不转发端口? 或者,为了使myContainer能够通过 openVPN容器进行连接,将会发生什么情况。

另一个select是问问那些习惯于将所有东西都 jfrazelle的习惯的杰夫·弗拉泽尔( jfrazelle ) 。

果然,她有一个jfrazelle/dockerfiles/openvpn项目,直接向主机公开:

 vpn: build: . volumes: - .:/etc/openvpn net: host devices: - /dev/net/tun:/dev/net/tun cap_add: - NET_ADMIN 

它使用TUN(而不是TAP)接口 。

可能最简单的解决scheme是configuration任何需要vpn的容器来使用vpn容器的networking命名空间。 也就是说,你的docker-compose.yml会包含如下内容:

 vpn: image: myvpn_image app1: image: app1_image net: container:vpn 

使用此configuration, vpn容器和app1容器将看到相同的networking环境。