我们正在将 CI 基础设施实现为 Docker 堆栈。
堆栈中的一些容器现在需要访问外部服务,这些服务只能通过 OpenVPN 连接获得,比如说在192.168.2.0/24
子网上。
为了使容器尽可能“单一用途”,我们理想情况下希望添加一个 Docker 容器作为 VPN 网关,其他容器可以通过它与192.168.2.0/24
子网通信。
这首先引发了一个复杂问题:VPN 客户端容器需要cap-add
of NET_ADMIN
,这在我们用于部署堆栈的 swarm 模式中不可用。除了将 VPN 客户端容器作为独立启动之外,是否有解决方法docker run
?
更重要的是,一旦我们vpnclient
运行并连接了容器,我们如何配置 swarm 中的其他容器以实际使用它作为网关来访问子网上的所有 IP 192.168.2.0/24
?