我们在Digital Ocean上运行堆栈 . 为了提高安全性,docker swarm所有运行在Droplets上的专用网络(eth1)上 . 我们有一些管理服务,我们不希望在公共IP上公开,而是在私有IP上公开 .
是否可以在特定接口上公开端口?或者可以创建另一个只暴露私有IP端口的入口网络?
我们现在的解决方法是那些服务我们只是作为普通容器运行,并暴露私有IP地址上的端口 .
使用覆盖网络驱动程序(使用入口网络)时,只有一个入口,在 docker swarm init/join 期间使用 --data-path-addr 定义 . 您可以使用Swarm "control plane" --advertise-addr 的专用网络,但's the only control you'具有 .
docker swarm init/join
--data-path-addr
--advertise-addr
如果您需要控制对特定登录组的访问权限/ IP 's, then I'建议在其前面放置代理并控制该方式 . Here's some nginx info on that . 您可以在Docker Flow Proxy或Traefik中进行设置 .
您可以做的另一件事是设置服务约束,其中一组服务器用于公共访问,另一组服务器正在侦听专用IP并具有特定节点标签,因此您可以使用仅部署到专用/公共服务器的约束来部署服务 .
1 回答
使用覆盖网络驱动程序(使用入口网络)时,只有一个入口,在
docker swarm init/join
期间使用--data-path-addr
定义 . 您可以使用Swarm "control plane"--advertise-addr
的专用网络,但's the only control you'具有 .如果您需要控制对特定登录组的访问权限/ IP 's, then I'建议在其前面放置代理并控制该方式 . Here's some nginx info on that . 您可以在Docker Flow Proxy或Traefik中进行设置 .
您可以做的另一件事是设置服务约束,其中一组服务器用于公共访问,另一组服务器正在侦听专用IP并具有特定节点标签,因此您可以使用仅部署到专用/公共服务器的约束来部署服务 .