如何访问虚拟机里的虚拟机里的虚拟机里的....
来源:互联网 发布:云计算发展方向 编辑:程序博客网 时间:2024/06/01 20:25
如何访问虚拟机里的虚拟机里的虚拟机里的....
起源
题目有点夸大了,其实就是访问虚拟机里的docker虚拟机。但是道理和访问虚拟机里的虚拟机里的虚拟机里的...是一样的你懂的。
最近在研究spark和docker,利用docker搭建了个分布式spark环境。我本机是windows,开了一台虚拟机centos跑docker及spark.
一般情况下
由于docker虚拟出来的网段是172.17.0.x,我windows主机肯定访问不了。但我可以访问master:
docker run -p 7077:7077 -p 8080:8080 -v /opt/CDH/spark-0.9.1-bin-cdh4/:/opt/spark spark-test-master
将docker的端口映射成虚拟机的ip端口。
难以忍受的是
192.168.152.131是我的虚拟机centos的ip,当我要访问多个workers的时候,为了避免端口冲突,必须修改对应的映射ip,比如192.168.152.131:8081,192.168.152.131:8082,但是这样就没办法通过192.168.152.131:8080主页直接访问其他worker的web页面。
懒惰的人要解决这些问题
我们分析一下
我虚拟机用的是NAT方式连接。vmware会在windows主机虚拟一个vm8网卡,作为NAT,let's see:
以太网适配器 VMware Network Adapter VMnet8: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::98a3:2540:507c:c401%20 IPv4 地址 . . . . . . . . . . . . : 192.168.152.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . :
centos虚拟机的ip:
eth0 Link encap:Ethernet HWaddr 00:0C:29:69:19:94 inet addr:192.168.152.131 Bcast:192.168.152.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:95126 errors:0 dropped:0 overruns:0 frame:0 TX packets:37664 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:121109914 (115.4 MiB) TX bytes:4068705 (3.8 MiB)
docker虚拟的网卡:
docker0 Link encap:Ethernet HWaddr FE:54:65:6F:81:5C inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12802 errors:0 dropped:0 overruns:0 frame:0 TX packets:38684 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1516399 (1.4 MiB) TX bytes:56376971 (53.7 MiB)
docker container的各个ip:
spark-master=172.17.0.2spark-woker=172.17.0.3spark-woker=172.17.0.4spark-worker=172.17.0.5
解决办法
完整的路由:
本机->虚拟网卡(192.168.152.1)->linux虚拟机ip(192.168.152.131) ->linux虚拟机里的虚拟网卡(172.17.41.1)->linux虚拟机里的虚拟机(172.17.0.2)
所以添加一条路由就好了:
route add -p 172.17.0.0 mask 255.255.255.0 192.168.152.131
跟踪一下看:
C:\Users\Administrator>tracert 172.17.0.2通过最多 30 个跃点跟踪到 172.17.0.2 的路由 1 <1 毫秒 <1 毫秒 <1 毫秒 192.168.152.131 2 <1 毫秒 <1 毫秒 <1 毫秒 172.17.0.2跟踪完成。
插曲
由于校园网也是172.17.0.0网段的,会有网关冲突。路由表也有优先级,一开始设置的添加路由之后,走的居然是校园网的那条。问了大神,大神说一般是优先走明细路由。我这边明显不一样。最后是这样:
route delete 0.0.0.0
不能上网了0..0
route add -p 172.17.0.0 mask 255.255.255.0 192.168.152.131
重新添加校园网的网关,两边都ok了。
Reference
http://tonyguo.blog.51cto.com/379574/176104
- 如何访问虚拟机里的虚拟机里的虚拟机里的....
- 虚拟机里的文件共享
- 虚拟机里的“共享文件夹”
- 虚拟机里文件的共享
- VirtualBox里设置Hostonly网卡访问虚拟机的服务
- 访问虚拟机中IIS里的项目(学习笔记)
- mac 访问虚拟机里的python django页面
- 通过ssh访问NAT网络模式虚拟机里的Linux
- windows访问虚拟机里的CentOS7中angular应用
- 虚拟机centos里的elasticsearch外部主机访问不到
- 查看虚拟机里的Centos7的IP
- 查看虚拟机里的Centos7的IP
- 虚拟机里的Centos6.5的IP
- 查看虚拟机里的Centos7的IP
- 查看虚拟机里的Centos7的IP
- 配置虚拟机里的linux为路由器
- Xshell连接虚拟机里的Linux
- 虚拟机里Linux下误删文件的解决方法
- VS2013自带报表+打印功能
- android SDK sample说明
- gitHub使用SVN commit时报错 “svn mkcol not allowed”
- Project 2013项目管理教程(3):建立任务间的依赖性
- 上海明奕担保公司办信用卡怎么样?
- 如何访问虚拟机里的虚拟机里的虚拟机里的....
- Flex使用 RemoteObject 组件
- Linux终端使用技巧
- linux配置vncserver服务
- Project 2013项目管理教程(4):设置资源
- 花果山装腔指南
- 常用的Java代码汇总
- UVa 558 - Wormholes(spfa判断负环)
- android 遇到unable to resolve superclass of 类的问题