外部网络通过端口映射访问部署在虚拟机里Docker中的Web应用
文章目录
背景
为方便测试使用,通常我们选择在Windows主机中安装虚拟机(VMware Workstation),在虚拟机中部署Docker容器。而我们部署在Docker中的容器外部网络(和Windows同一层的网络)是无法访问的。
准备工作
机器准备
Windows
虚拟机-VMware
IP准备
Windows IP:192.168.10.103
虚拟机(CentOS7) IP:192.168.93.128
Docker容器 IP:172.17.0.3
(宿主机器与容器之间访问)创建容器时可以选择docker自带的端口映射功能,能够跨网络实现172.17.0.3与192.168.93.128的通信
1 | $ docker run --name html -p 8082:80 -v /data/html:/usr/share/nginx/html:ro -d nginx |
这里我们可以通过访问192.168.93.128的8082端口映射到172.17.0.3的80端口,也就是可以直接访问nginx服务
1 | [root@kunlv ~]# curl http://192.168.93.128:8082 |
(外部访问虚拟机内的服务)采用VMware自带的虚拟网络编辑器实现外部网络访问虚拟机内的服务
点击”编辑“->”虚拟网络编辑器“,如图
选择”NAT“,然后点击”NAT设置“,如图
接下来点击”添加“,让访问主机的8082端口映射到虚拟机里8082端口
在弹出来的界面中分别填入主机端口,虚拟机IP,虚拟机端口,如图
确定后,我们就将虚拟机中的80号端口映射到宿主机的8082号端口了。可以外部网络测试了,选择和主机同一层的其他机器做测试就可以了
请在跟Windows机器同一个域名的机器上面通过访问地址:
http://192.168.10.103:8082 既可以访问到虚拟机里面docker部署的服务。
测试通过
如果以上步骤操作还是不能访问,考虑一下防火墙的问题,可以在防火墙入口规则里开放8082端口,这里为了便于测试我把防火墙关掉了