老白的Docker for Windows安装初探WSL 2 backend(续篇)
原文:https://post.smzdm.com/p/a4wm8kpx/
创作立场声明:老白的踩坑过程,感谢您的理解和支持!
大家好,前段时间展示了Docker Desktop的两个版本的安装踩坑过程。对于Docker Desktop WSL 2 backend,简单测试之后仍是有很多的疑问(毕竟菜鸟一只),我想知道的最主要问题是:用到Windows NAS上有没有可操作性?适用吗?带着这些疑问,重新阅读了微软的WSL文档并结合实际操作去测了一番,分享一下我的心得体会。
适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
踩坑链接:
WSL面向的用户
开发人员或需要在Windows上使用linux工具的用户。社区不乏大神出没,看来这个从定位上来讲并不适合我这种老菜鸟,太难了。
WSL2的目标和访问
WSL 2优点包括Windows和Linux无缝集成,启动时间短,资源占用量少,并且无需VM配置或管理。更好的文件系统性能,完全的系统调用兼容性,微软强调将项目文件存储在linux文件系统中以获得更好的性能。来看图说说访问的方式。
Windows中查看子系统文件
子系统中查看Windows文件
微软提到的例外情况
微软在例外情况中说明了推荐使用WSL1的某些情况,当然我没用过WSL1,但这些可以作为折腾时的参考。
1、你的项目文件必须存储在windows系统中。
“如果你将使用 WSL Linux 分发版来访问 Windows 文件系统上的项目文件,并且这些文件无法存储在 Linux 文件系统上,那么,通过使用 WSL 1,你将跨 OS 文件系统实现更快的性能。”
折腾docker主要是免去了许多部署的麻烦,非常方便。最终目的还是对NAS上的文件进行操作,符合上述情况。Win NAS,由此看来WSL 2似乎不太合适啊 。
其他说明
WSL2 VHD使用ext4文件系统,大小动态调整,最大256GB,可手动扩展大小。WSL2的初始版本中,无法访问GPU、串行或USB设备。微软在Window 10预览版Bulid20150已经针对linux子系统进行了更新,包括GPU计算WSL安装和更新,但正式发布那可能是9月以后的事情了...
WSL2的文件系统
WSL分发版支持导入导出的命令。子系统需不需要实时的备份呢?
一些简单测试记录
Typecho
将数据存储在Windows指定的目录,没问题。
访问Windows目录
数据详情
Emby
Emby有原生的Windows版本,折腾嘛,看看是否会有多一种可能。容器运行正常,媒体库添加文件夹时列表中找不到mnt目录。这里不知道是不是操作或者设置上有什么问题,阅读了WSL文件权限的部分,还是没太明白,有大佬可以指点一二嘛
Emby
Emby找不到目录
KodExplorer
同上,访问不了Window目录。
可道云
迷之内存占用
看到一些帖子反馈占用内存特别大。跑了一下,确实有这样的情况,跑4个容器的内存占用比2个低,不知道为什么没有释放,难道全拿去缓存了?查了一下,万能的网友也有解决办法,放出来参考(根据自己情况调整内存和swap的大小)
在 %UserProfile% 文件夹下创建.wslconfig文件,内容:
[wsl2]
memory=1GB
swap=1
localhostForwarding=true
2个容器
4个容器
写在最后
摸摸我的J1900小NAS,这个预想的Windows+Docker的方案,从定位、支持情况、折腾过程、硬件资源占用各方面来看,确实不太适合我。老老实实参考其他方案,或者在linux上折腾docker比较好。至于Docker Desktop WSL 2 backend,未来还有无限可能。
应了开篇那句,Windows下的Docker,想说爱你不容易(现阶段)!
老白的Docker for Windows折腾完结,感谢阅读支持!