Win7下VS2017结合Docker Toolbox部署.NET Core 2.0容器遇卷共享问题
解决Windows7下Docker Toolbox + VS2017 .NET Core 2.0 Linux容器的卷共享报错问题
我之前在Windows7上用VS2017开发.NET Core 2.0 Linux容器应用时,也碰到过这个一模一样的报错——提示要在Docker CE for Windows里开卷共享,但咱们明明用的是Docker Toolbox+VirtualBox,这明显是VS认错了环境导致的误报。下面是我亲测有效的解决步骤:
1. 给VirtualBox虚拟机配置共享文件夹
首先得让Docker Toolbox的默认虚拟机能访问你本地的项目目录:
- 先关掉虚拟机:打开Docker Quickstart Terminal,输入
docker-machine stop default - 打开VirtualBox,找到名为
default的虚拟机,右键选「设置」→「共享文件夹」 - 点右侧的「添加」按钮,设置共享参数:
- 文件夹路径:选你项目所在的根目录(比如
C:\MyDotNetProjects),嫌麻烦的话直接选C盘根目录C:\也行 - 共享文件夹名称:建议设成
c(对应Windows的C盘,好记) - 一定要勾选「自动挂载」和「固定分配」,然后点「确定」保存
- 文件夹路径:选你项目所在的根目录(比如
- 重新启动虚拟机:回到Docker Quickstart Terminal,输入
docker-machine start default
2. 让VS2017识别正确的Docker环境
VS默认可能没读到Docker Toolbox的环境变量,得手动配置:
- 在Docker Quickstart Terminal里输入
docker-machine env default,会输出一串环境变量(比如SET DOCKER_TLS_VERIFY=1、SET DOCKER_HOST=tcp://192.168.99.100:2376这类) - 复制这些变量,然后打开Windows的系统环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里把这些变量逐一添加进去,确保VS启动时能拿到正确的Docker连接信息
3. 调整项目的Docker配置(按需操作)
如果你的项目用了自定义的docker-compose.yml或者卷映射,得把路径改成VirtualBox能识别的格式:
- 比如原来的Windows路径
C:\MyDotNetProjects\MyWebApp,要换成虚拟机里的路径/c/MyDotNetProjects/MyWebApp(因为VirtualBox挂载的共享目录在虚拟机里是以/开头的,比如C盘对应/c) - 同时检查
.dockerignore文件,别把项目的核心目录排除了,不然卷共享也会出问题
4. 验证共享是否生效
先确认虚拟机能读到本地文件,再重启VS试:
- 在Docker Quickstart Terminal里输入
docker run -v /c/MyDotNetProjects:/app alpine ls /app,如果能列出你项目目录里的文件,说明共享成功了 - 关掉VS2017重新打开,加载项目后再尝试运行容器,应该就不会再报错了
额外小贴士
- 如果你的项目在非C盘(比如D盘),记得在VirtualBox里添加对应的共享文件夹,共享名设成
d,虚拟机里路径就是/d - 尽量用Docker Toolbox自带的VirtualBox版本,避免版本不兼容导致共享失败
- 如果实在不行,试试重置虚拟机:输入
docker-machine rm default,然后docker-machine create --driver virtualbox default,再重新配置共享文件夹
内容的提问来源于stack exchange,提问作者Jan Muncinsky
相关产品推荐
相关产品推荐

