问题:
在windows机器上安装virtualbox后,创建虚拟linux服务器,之后在linux上部署docker容器,使用docker默认的网络模式部署,发现在虚拟机里面可以访问到部署的应用,但是在windows上使用浏览器访问ip和端口却无法访问的问题。
解决1:
image.png如果所示,windows的浏览器访问nginx容器,需要一层一层的映射,最后访问到nginx服务。这里一共有三层映射关系:
1.windows ip端口映射到 virtualbox
2.virtualbox ip端口映射到 docker
3.docker ip端口映射到 nginx容器实例服务
此时,windows ip端口映射到 virtualbox 是需要配置的,virtualbox ip端口映射到 docker 是docker启动自己设置的映射,通过docker run -d -p 80:80 --name=nginx nginx 命令启动时映射的,docker ip端口映射到 nginx容器实例服务是在docker容器启动时走默认的桥接网络模式自动映射的。所以问题就出现在windows ip端口映射到 virtualbox 是需要配置的这块。
查看virtualbox虚拟机的网络设置部分:
这块只是做了windows的2022端口映射成virtualbox的22端口。所以可以远程使用xshell这样的工具登录上对应的虚拟机上。
image.png
按照上图再加一个端口映射,将windows的8888端口映射到virtualbox的80端口,即可,效果如下
image.png
image.png
image.png
访问 链路 :192.168.56.1:8888 =》172.17.0.1:80(docker0) =》容器的虚拟IP:80端口
解决2:
除了以上的方式逐一添加对外暴露端口的方式还有一劳永逸的方式。
创建网卡一,按照图中配置 - 默认nat 模式网卡
image.png
创建网卡二,按照图中配置 - onlyhost 模式网卡
image.png
这种方式是一劳永逸,直接让虚拟机系统的端口与宿主机端口全部形成一一映射。
网友评论