docker-machine 驱动兼容性大盘点:docker-windows-box 揭秘 VMware 驱动与 boot2docker 共享文件夹问题
【免费下载链接】docker-windows-boxVarious Vagrant envs with Windows 2019/10 and Docker, Swarm mode, LCOW, WSL2, ...项目地址: https://gitcode.com/gh_mirrors/do/docker-windows-box
🐳docker-windows-box是一个面向 Windows 容器的 Vagrant 测试环境集合,其中专门准备了两个子项目,用于实测docker-machine 的 VMware 驱动兼容性与boot2docker 共享文件夹问题:docker-machine/(Windows 10 + VMware Workstation)和docker-machine-fusion/(macOS + VMware Fusion)。本文带你快速看懂:哪些版本组合可用、共享文件夹为什么失效,以及如何三步验证。
为什么专门测 docker-machine 的 VMware 驱动?
docker-machine 负责在宿主机上自动创建并管理一台运行 Docker 引擎的 Linux 虚拟机(即 boot2docker 虚机)。在 Windows 和 macOS 上,它依赖第三方 VMware 驱动(vmwareworkstation、vmware、vmwarefusion),而这些驱动的版本组合一旦出现偏差,最典型的症状就是:
- boot2docker 虚机能启动,但宿主机共享文件夹挂载失败,
/Users目录为空; - 容器内无法读写宿主机文件,开发体验直接"翻车"。
docker-windows-box 项目作者用两套自动化环境,把 docker-machine 0.13.0 ~ 0.16.0 与不同驱动逐一实测,结论都记录在了环境说明中,堪称一份"兼容性速查表"。
两大开箱即用的测试环境
1️⃣ Windows 10 + VMware Workstation 环境
docker-machine/Vagrantfile 会自动完成全部配置:安装 VMware Workstation 15.0.1、Docker 17.10.0、docker-machine 0.13.0,并同时装上vmwareworkstation和vmware两个第三方驱动,方便横向对比。
2️⃣ macOS + VMware Fusion 环境
docker-machine-fusion/Vagrantfile 则基于 macOS 10.13 虚机,通过 Homebrew 安装 VMware Fusion,并预置 docker-machine 0.13.0 ~ 0.16.0 共多个版本的二进制,用于逐版本回归测试vmwarefusion驱动。
两个环境的详细说明分别见 docker-machine/README.md 与 docker-machine-fusion/README.md。
boot2docker 共享文件夹问题:实测兼容性矩阵
以下是 VMware Workstation 场景下的实测结果(boot2docker 均为 18.06.1):
| 共享文件夹状态 | docker-machine 版本 | 使用的驱动 | boot2docker |
|---|---|---|---|
| ✅ 正常 | 0.13.0 | vmwareworkstation | 18.06.1 |
| ✅ 正常 | 0.16.0 | vmwareworkstation | 18.06.1 |
| ❌ 失败 | 0.13.0 | vmware | 18.06.1 |
| ❌ 失败 | 0.16.0 | vmware | 18.06.1 |
结论很直白:换用vmwareworkstation驱动即可。而 macOS 侧的表现更"干脆"——作者实测发现,较新的 docker-machine 二进制在vmrun enableSharedFolders这一步直接中止,只有 0.13.0 搭配vmwarefusion驱动能正常工作。
三步验证共享文件夹是否正常工作
在测试虚机内部(可通过vagrant rdp进入桌面),按顺序执行三步即可定位问题:
- 创建机器:用指定驱动和 boot2docker 镜像创建 docker machine,例如
docker-machine -D create -d vmwareworkstation ...(-D参数会输出调试日志,便于观察失败位置); - 检查挂载:执行
docker-machine ssh test ls /Users,若/Users目录为空,说明共享文件夹挂载失败; - 容器内验证:挂载进容器再确认一次,如
docker run --rm -v /Users:/Users alpine ls /Users,能列出文件才算组合真正可用。
💡 小技巧:创建过程中可以直接打开~/.docker/machine/machines/test/test.vmx文件,在 VMware 界面里直观查看 boot2docker 虚机的运行状态;换版本前先执行docker-machine rm -f test销毁旧机器。
Windows 容器生态的整体图景
除了 docker-machine 场景,docker-windows-box 还覆盖 Windows Server 上的 Docker 引擎、Swarm 模式、LCOW 以及 WSL 2 等多种环境,方便你在同一套工具链下做横向对比。下图即为 Windows Server 虚机内查看 Docker 版本与容器镜像的典型画面:
总结:记住这两条避坑原则
- Windows 上用
vmwareworkstation驱动,避开vmware驱动——后者(0.13.0 和 0.16.0)共享文件夹均失败; - macOS 上锁定 docker-machine 0.13.0 +
vmwarefusion驱动——更新版本会在vmrun enableSharedFolders处中止。
需要动手验证的话,克隆仓库后进入对应目录执行vagrant up即可:
git clone https://gitcode.com/gh_mirrors/do/docker-windows-box cd docker-windows-box/docker-machine vagrant up整套环境由 Vagrant 自动完成安装与配置,非常适合新手复现问题、对比驱动行为,也适合作为团队排查"共享文件夹玄学问题"的标准实验台。🎯
【免费下载链接】docker-windows-boxVarious Vagrant envs with Windows 2019/10 and Docker, Swarm mode, LCOW, WSL2, ...项目地址: https://gitcode.com/gh_mirrors/do/docker-windows-box
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考