Route/Bridge docker 带有 zerotier 虚拟适配器的虚拟适配器

Route/Bridge docker virtual adapter with zerotier virtual adapter

我有一堆服务器 运行 在 docker 容器中 docker-for-windows。由于 docker 在 windows 上的工作方式,这些都被推入 hyper-v 虚拟机,然后是容器 运行。所以要访问绑定到本地主机的服务器,我实际上使用的是 hyper-v 虚拟适配器的 ip。

所以当我在主机 windows 机器上时,我可以使用 10.0.75.2:3579 连接到我的服务器。现在我想使用 zerotier 将我所有的 docker 容器桥接到一个虚拟局域网,这样我就可以在我的学校网络之外访问我的容器。 ZeroTier 创建一个名为 "zerotier one virtual port" 的虚拟适配器: 现在它是如何工作的,如果我 运行 主机 windows 机器上的服务器(裸机)那么我可以使用我的 zerotier ip 访问它们 10.147.17.221:端口。但是这并没有连接我的 docker 东西,因为它在不同的适配器上,这意味着我必须在机器上才能做任何 docker 相关的事情。我如何将 zerotier 适配器路由或桥接到 hyper-v docker 适配器,以便我可以使用 zerotier ip 从外部访问我的 docker 容器?

我没有 windows VM 来尝试此操作,但会为此目的使用 docker 网络。例如:

docker network create private

docker run --rm --name web --network private -p host_port_1:container_port_1 -p host_port_2:container_port_2 nginx:latest

docker run --rm --name db --network private -p host_port_3:container_port_1 -p host_port_4:container_port_2 postgres:latest

让我知道进展如何。

我想到的最佳解决方案是不使用 zerotier。我已经切换到 ngrok,它允许重定向到本地 ip 的平凡

  • 在您的 ZeroTier 网络上创建这样的托管路由: [10.0.75.0/24] - [10.147.17.211]
  • 在 Windows 中开启 IP 转发。

这将为您网络上的所有 ZeroTier 节点添加静态路由,以便它们知道使用您的 VM hhost 的 zerotier IP 作为到 docker LAN 的路由。