在个人笔记本电脑上使用vmware部署虚拟机,且在虚拟机上部署docker容器,使用docker部署网页。
在个人笔记本的浏览器上访问虚拟机ip+port,显示无法访问。排查防火墙停用、端口没有占用都没问题;网络可以连接互联网,且笔记本电脑ping虚拟机ip也没问题。
如何解决个人笔记本电脑浏览器可访问虚拟机网页?
既然宿主机能ping虚拟机ip,虚拟机也能上网,说明网络是没问题的。主要问题应该在虚拟机内:
1、虚拟机内容器内的端口有没有对外映射
2、虚拟机中能否访问到容器中内容,curl 一下试试,
如果虚拟机中curl 可以正常显示页面内容,而宿主机不可以,那就排查虚拟机的防火墙跟网络,一般防火墙关了就可以,开启的话得单独放开相关端口。
# 1. 查看所有运行中容器的端口映射情况(重点关注 PORTS 列)
docker ps
# 2. 单独查看你部署网页的那个容器的详细映射
docker port <容器名或ID>
判断标准:
如果 PORTS 列为空 → 容器启动时没做端口映射,外部绝对访问不了。
如果显示 127.0.0.1:8080->80 → 只绑定了宿主机回环地址,外部也访问不了。
必须显示为 0.0.0.0:8080->80 或 :8080->80 才是正确的。
# 3. 进入容器查看服务监听地址(重点看 Local Address 列)
docker exec <容器名> ss -tlnp
# 4. 如果容器内没有 ss,用这个
docker exec <容器名> netstat -tlnp
判断标准:
看到 0.0.0.0:8000 或 *:8000 或 [::]:8000 → 正常,外部可达。
看到 127.0.0.1:8000 → 这就是根因!说明容器内的网页服务只监听了自己的回环地址,拒绝外部请求。