在大多数情况下,您有一个 docker 容器,您在主机上公开一个端口,以便可以通过本地网络访问它……而我想要做的却恰恰相反。
我有一个应用程序,旨在发现和管理网络上的 IoT 设备。我设置了 x1000+ 个 Docker 容器,就像各种 IoT 设备一样,现在我想让我的 Windows 应用程序(在另一台机器上运行)能够在 Docker 中搜索 172.17.xx 虚拟网络以进行压力测试。
我可以设置一个单独的 docker 节点作为 pptp vpn,可以让 windows 机器连接它...但我想知道是否有更简单的解决方案。
答案1
这不是完整的答案,因为从技术上讲,它并没有将计算机添加到内部 docker 网络,但是,您可以从主机网络上的计算机与 docker 网络进行通信。
例如,如果您有以下真实网络设备:
- 192.168.1.1-(r1)网络路由器
- 192.168.1.2 - (h2)随机计算机
- 192.168.1.3-(h3)docker 主机
以及以下docker网络:
- 172.17.0.1-(d1)docker 路由器(您不必设置它......它就在那里)
- 172.17.0.2-(d2)docker 节点
默认情况下,你可以从 (d2) ping (r1)、(h2)、(h3)
但是,如果您想从 (h2) ping (d2),则需要为 172.17.0.0 网络设置路由。这可以通过在 (h3) 上启用路由来实现:
sysctl -w net.ipv4.ip_forward=1
然后在 (h2) 或 (r1) 中设置静态路由:
route add -net 172.17.0.0 netmask 255.255.0.0 gw 192.168.1.3
最终结果是 (h2) 可以与 172.17.0.0 网络上的任何设备通信,而无需将端口绑定到 docker 主机或在 docker 主机上设置 eth0 的别名。