从Windows 10共享文件夹给Docker虚拟机中的Docker的神奇bug
2018-01-25 18:23
816 查看
一,回顾
这篇文章是基于之前发布的脚本http://blog.csdn.net/hu_zhenghui/article/details/79087151
不过在更多的设备上测试的时候,发现时灵时不灵,为了排查问题,花了很多时间,走了很多弯路,把这些经验做个总结,希望当您遇到类似的问题的时候可以节约时间。
二,测试环境
设备 | CPU | OS | 其他 |
---|---|---|---|
Surface Pro 3 | X86_64 | Windows 10 | 在Hyper-V上安装有Docker虚拟机 |
Surface Pro 1 | X86_64 | Windows 10 | 在Hyper-V上安装有Docker虚拟机 |
Macbook Air | X86_64 | Mac OS X | |
NAS | ARM | Embeded Linux | 提供CIFS服务 |
三,成功的用例
之前发布的脚本是在Surface Pro 1上共享文件夹给Surface Pro 1上Docker虚拟机,测试成功,也就没有想到会有什么问题四,发现问题
使用同样的脚本在Surface Pro 3上共享文件夹给Surface Pro 1上Docker虚拟机,失败。Docker虚拟机的版本相同
Surface Pro 3和Surface Pro 1都是Windows 10自动更新的
五,更多的测试
访问来源 | 访问目标 | 结果 |
---|---|---|
Surface Pro 3 | 访问Surface Pro 1上的共享文件夹 | 成功 |
Surface Pro 3 | 访问NAS上的CIFS文件夹 | 成功 |
Surface Pro 1 | 访问Surface Pro 3上的共享文件夹 | 成功 |
Surface Pro 1 | 访问NAS上的CIFS文件夹 | 成功 |
Macbook Air | 访问Surface Pro 3上的共享文件夹 | 成功 |
Macbook Air | 访问Surface Pro 1上的共享文件夹 | 成功 |
Macbook Air | 访问NAS上的CIFS共享文件夹 | 成功 |
Surface Pro 3中的Docker虚拟机 | mount NAS上的CIFS共享文件夹 | 成功 |
Surface Pro 1中的Docker虚拟机 | mount NAS上的CIFS共享文件夹 | 成功 |
Surface Pro 3中的Docker虚拟机 | mount Surface Pro 1上的共享文件夹 | 成功 |
Surface Pro 1中的Docker虚拟机 | mount Surface Pro 1上的共享文件夹 | 成功 |
Surface Pro 3中的Docker虚拟机 | mount Surface Pro 3上的共享文件夹 | 失败 |
Surface Pro 1中的Docker虚拟机 | mount Surface Pro 3上的共享文件夹 | 失败 |
六,分析
很显然,只有两种情况失败,都和Surface Pro 3有关,上网搜索。强调一下,上网搜索可能是捷径,也可能被误导。
看到的信息比较多的谈论SMB协议的版本问题,也就是说Linux只能访问较低版本,而Windows出于已知的安全隐患禁止了SMB协议的较低版本。
在这个方向上的调查浪费了很多时间……
七,柳暗花明
在网上和咨询专家获得的各种思路都尝试了一下,没有收获,最后在整理文档的时候,偶然发现了一个可行的情况。Surface Pro 3上有两个盘,一个是系统盘C,一个是数据盘D,一直在数据盘D上做实验,整理文档的时候,把代码移动到了系统盘C上的OneDrive文件夹,顺手实验了一下,就成功了!!!
为了验证,构建测试用例如下
创建用户userc
创建用户userd
在系统盘C的根目录中创建文件夹 C:/sharec,设置用户userc具有完全控制权限,共享为文件夹sharec,设置共享权限为userc具有完全控制权限。
在数据盘D的根目录中创建文件夹 D:/shared,设置用户userd具有完全控制权限,共享为文件夹shared,设置共享权限为userd具有完全控制权限。
进入Docker虚拟机的命令行界面。
创建加载文件夹/mntc
mkdir /mntc
创建加载文件夹/mntd
mkdir /mntd
加载前面共享的sharec
mount -t cifs //192.168.1.58/sharec /mntc -o username=userc,password=userc
成功
创建文件
touch /mntc/test.txt
成功
加载前面共享的shared
mount -t cifs //192.168.1.58/shared /mntd -o username=userd,password=userd
报错
mount: mounting //192.168.1.58/shared on /mntd failed: Input/output error
后续又尝试把shared的权限改成和sharec相同,也不成,也许是Windows 10的某个安全策略有关,也许是我的移动硬盘有关,以后有了对比的条件后再记录。
相关文章推荐
- 从一台 Windows 10 上共享文件夹到Docker中的Volume卷
- 详述虚拟机与Windows共享文件夹的设置方法
- 启动Windows虚拟机都会弹出Parallels共享文件夹通知
- centos VM VirtualBox虚拟机设置跟windows主机共享文件夹
- 【VirtualBox】ubuntu虚拟机与windows设置共享文件夹
- 将windows中的文件夹共享给Linux虚拟机
- 【Linux虚拟机】设置vmware下的虚拟机与主机windows共享文件夹
- fedora 10 smba设置-与windows共享文件夹
- Vmware10中Centos7挂载Windows主机的共享文件夹
- windows和虚拟机linux共享文件夹
- windows 系统的安装和虚拟机共享文件夹
- virtual box 虚拟机Linux系统与主机windows系统共享文件夹
- (开包即用,不用看代码!)在 Docker 中用 nginx 和 PHP-fpm 运行来自 Windows 共享文件夹的路由模式网站
- Windows(host) 和 Ubuntu(guest )虚拟机共享文件夹设置总结
- 从一台 Windows 10 上访问另一台 Windows 10上创建的Docker虚拟机
- Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(Windows<->Windows, Windows<->Linux)
- vbox里面Ubuntu虚拟机与主机Windows之间设置共享文件夹
- VMare unbuntu虚拟机建立和windows共享文件夹
- Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(Windows<->Windows, Windows<->Linux)
- 在VirtualBox的Ubuntu虚拟机中与母体Windows共享文件夹