docker-machine:在某些 wifi 网络上没有到主机到默认 docker 机器(使用仅主机 vbox 网络)的路由
docker-machine: No route to host to default docker machine (using host-only vbox network) on some wifi networks
我是 运行 docker-machine OS X,它在我的家庭 wifi 网络 (wifi-one) 上运行良好。
在另一个 wifi 网络 (wifi-two) 上,我无法通过 docker-machine 或 ping 访问默认的 machine。我尝试删除所有 docker 和虚拟盒子软件和缓存,并在连接 wifi-two 时重新安装,但无济于事。
docker-machine 在使用 host-only vbox 网络(vboxnet0)的虚拟盒子中使用小型 vm 在 hos 之间进行通信t 和 vm.
在 wifi-one 上,我可以 ping 到 vboxnet0 (192.168.99.1) 的网关,也可以 ping 虚拟机 (192.168.99.100)。在路由 table 中,我可以使用正确的接口看到到虚拟机的路由:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default dlinkrouter UGSc 60 2 en0
...
dlinkrouter c0:a0:bb:xx:xx:xx UHLWIir 66 155 en0 1180
192.168.99 link#10 UC 2 0 vboxnet
192.168.99.100 8:0:27:db:16:21 UHLWIi 2 42 vboxnet 1109
...
在 wifi-two 上,我可以 ping 通 vboxnet0 网关,但不能 ping 通虚拟机。 Ping 报告请求超时,但 docker-machine 报告 "no route to host"。路由 table,当连接到 wifi-two 时,在 wifi 接口(en0)上显示到 vboxnet0 host-only 网络的路由,而不是 vboxnet0 接口。同样好奇的是默认路由是到vboxnet0网关的路由,但是路由中没有wifi路由器的迹象table。尽管如此,互联网连接在 wifi-two 上运行良好。
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.99.1 UGSc 46 0 en0
...
192.168.99 link#4 UCS 9 0 en0
192.168.99.1/32 link#4 UCS 2 0 en0
192.168.99.1 dc:9f:db:2b:89:39 UHLWIir 46 61 en0 1197
192.168.99.100 link#4 UHLWIi 1 3 en0
所以,我真的不知道问题出在哪里 - 路由器,mac os,虚拟盒子或 docker-machine。我怀疑路由器的配置有些有趣,但我不明白为什么 wifi 路由器与到 virtualbox host-only 网络的路由有任何关系。
编辑:通过 en0 和 运行 sudo route -nv add -net 192.168.99 -interface vboxnet0
手动删除到 192.168.99 的 en0 路由似乎在 wifi-two 上解决了这个问题。
但我想了解为什么会发生这种情况 - 为什么当我加入 wifi-two 时没有自动路由到 vboxnet0,我想找到比 运行 [=15 更好的解决方案=] 当我使用 wifi-two 时。
我明白了。这有点愚蠢:
wifitwo的子网是192.168.99。相同的子网 docker 用于它为默认 VM 创建的仅主机网络。所以冲突导致了各种神秘的错误。
我是 运行 docker-machine OS X,它在我的家庭 wifi 网络 (wifi-one) 上运行良好。
在另一个 wifi 网络 (wifi-two) 上,我无法通过 docker-machine 或 ping 访问默认的 machine。我尝试删除所有 docker 和虚拟盒子软件和缓存,并在连接 wifi-two 时重新安装,但无济于事。
docker-machine 在使用 host-only vbox 网络(vboxnet0)的虚拟盒子中使用小型 vm 在 hos 之间进行通信t 和 vm.
在 wifi-one 上,我可以 ping 到 vboxnet0 (192.168.99.1) 的网关,也可以 ping 虚拟机 (192.168.99.100)。在路由 table 中,我可以使用正确的接口看到到虚拟机的路由:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default dlinkrouter UGSc 60 2 en0
...
dlinkrouter c0:a0:bb:xx:xx:xx UHLWIir 66 155 en0 1180
192.168.99 link#10 UC 2 0 vboxnet
192.168.99.100 8:0:27:db:16:21 UHLWIi 2 42 vboxnet 1109
...
在 wifi-two 上,我可以 ping 通 vboxnet0 网关,但不能 ping 通虚拟机。 Ping 报告请求超时,但 docker-machine 报告 "no route to host"。路由 table,当连接到 wifi-two 时,在 wifi 接口(en0)上显示到 vboxnet0 host-only 网络的路由,而不是 vboxnet0 接口。同样好奇的是默认路由是到vboxnet0网关的路由,但是路由中没有wifi路由器的迹象table。尽管如此,互联网连接在 wifi-two 上运行良好。
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.99.1 UGSc 46 0 en0
...
192.168.99 link#4 UCS 9 0 en0
192.168.99.1/32 link#4 UCS 2 0 en0
192.168.99.1 dc:9f:db:2b:89:39 UHLWIir 46 61 en0 1197
192.168.99.100 link#4 UHLWIi 1 3 en0
所以,我真的不知道问题出在哪里 - 路由器,mac os,虚拟盒子或 docker-machine。我怀疑路由器的配置有些有趣,但我不明白为什么 wifi 路由器与到 virtualbox host-only 网络的路由有任何关系。
编辑:通过 en0 和 运行 sudo route -nv add -net 192.168.99 -interface vboxnet0
手动删除到 192.168.99 的 en0 路由似乎在 wifi-two 上解决了这个问题。
但我想了解为什么会发生这种情况 - 为什么当我加入 wifi-two 时没有自动路由到 vboxnet0,我想找到比 运行 [=15 更好的解决方案=] 当我使用 wifi-two 时。
我明白了。这有点愚蠢:
wifitwo的子网是192.168.99。相同的子网 docker 用于它为默认 VM 创建的仅主机网络。所以冲突导致了各种神秘的错误。