在我们的团队中,某些容器将需要通过OpenVPN连接访问外部服务。
秉承职责分离,我们实现了一个客户端OpenVPN容器,该容器将负责VPN层。我们打算让其他容器在需要访问VPN上的计算机时将其用作网关。
docker network create -d overlay --attachable vpn_net
# Start the gateway on this network
docker run --name openvpn -d --cap-add NET_ADMIN --network vpn_net openvpn-client
# deploy a swarm of containers
docker stack deploy -c docker-compose.yml custom-stack
(docker-compose.yml
使vpn-net
成为需要VPN连接的服务可用的网络之一。)
可悲的是,上述容器无法ping通VPN上的IP(即使openvpn
容器成功ping通了它们)。看来我们不允许向在swarm中运行的容器添加路由:
$ route add -net 192.168.2.0 gw 10.0.0.5 netmask 255.255.255.0
SIOCADDRT: Operation not permitted
有什么方法可以将这种路线添加到群中的容器吗?