一、场景背景
在开发过程中,物理机可能因环境限制无法直接安装 Docker:
- Windows 家庭版不支持 Hyper-V 虚拟化平台
- 硬件资源冲突导致 Docker 无法正常运行
- 企业安全策略限制软件安装
本文提供一种轻量级解决方案:通过 VMware 虚拟机的 NAT 网络模式,结合 Docker 端口映射技术,实现容器化服务的跨网络访问。以 Splash 网页渲染服务为例,详细演示操作流程。
二、前置条件
-
环境准备
- 虚拟机软件:VMware Workstation(本文以 Windows 11 虚拟机为例)
- 网络模式:NAT 模式(确保虚拟机与物理机网络互通)
- 已在虚拟机安装 Docker Desktop
- 镜像准备:提前拉取 Splash 镜像(
docker pull scrapinghub/splash
,镜像拉取问题可参考博主镜像拉取相关教程)
-
网络架构说明
物理机 ↔ NAT网关 ↔ 虚拟机 ↔ Docker容器 (通过端口映射实现服务穿透)
三、具体步骤
这里以VMware的Windows11虚拟机为例。
1.打开虚拟机的控制面板,小图标显示,选择Windows防火墙,然后点击高级设置。
2.新建入站规则,选择端口。
3.点击下一页,接着输入要暴露的端口,这里以splash为例,端口为8050,然后不断点击下一页,最后随便起个名字就行了。
4.win+R,cmd打开命令行,输入docker imgs查看镜像名称,选中镜像,并以-p 8050:8050绑定端口运行容器。
5.接着输入ipconfig查看虚拟机IP
6.此时,可在物理机浏览器输入192.168.88.134:8050访问splash服务。
7.输入百度搜索的URL验证渲染效果。
扩展场景:
- 替换Splash为其他服务(如Nginx、Redis),复用相同流程。
- 虚拟机内部署Docker Compose,批量管理多容器服务。
四、技术原理与关键配置
网络穿透核心机制
- NAT 模式:虚拟机通过主机的 NAT 服务访问外部网络,同时主机可通过端口映射访问虚拟机服务
- Docker 端口映射:
-p
参数实现容器端口到虚拟机端口的映射(支持单端口和端口范围映射) - 防火墙规则:确保虚拟机入站流量可到达目标端口(需同时关闭或配置 Windows Defender 防火墙)
五、结语
如果你觉得这篇教程对你有帮助,欢迎点赞 + 收藏 + 关注!你的支持是我持续分享技术干货的动力~