我们的某些应用程序依赖于连接到我们的VPN以连接到不同的(尚未停靠的)解决方案。
这样做的“码头工作方式”是什么?在我看来,将OpenVPN添加到现有图像是违背了docker的理念。
从我站立的地方,我觉得创建一个docker VPN客户端容器是最有意义的。但那会是什么样子?我使用docker compose,所以肯定会有一个
myContainer
- links: myVPNClient
但是我必须转发端口吗?或者,要使myContainer
连接通过 openVPN容器,必须采取哪些措施。
答案 0 :(得分:13)
另一种选择是询问Jess Frazelle (jfrazelle
)的习惯containerizing everything。
果然,她有一个jfrazelle/dockerfiles/openvpn
项目,直接将它暴露给主持人:
vpn:
build: .
volumes:
- .:/etc/openvpn
net: host
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- NET_ADMIN
答案 1 :(得分:5)
最简单的解决方案可能是配置任何需要vpn的容器来使用vpn容器的网络命名空间。也就是说,您的docker-compose.yml将包含以下内容:
vpn:
image: myvpn_image
app1:
image: app1_image
net: container:vpn
使用此配置,vpn
容器和app1
容器可以看到相同的网络环境。