最佳实践
请始终使用最新版本的WSL。最低要求为WSL版本2.1.5,否则Docker Desktop可能无法正常工作。测试、开发和文档均基于最新的内核版本。较旧版本的WSL可能导致:
- Docker Desktop定期挂起或在升级时挂起
- 通过SCCM部署失败
vmmem.exe占用所有内存- 网络过滤器策略被全局应用,而非针对特定对象
- 容器出现GPU故障
为了在使用绑定挂载文件时获得最佳文件系统性能,建议您将源代码和其他绑定挂载到Linux容器中的数据存储在Linux文件系统中,而不是Windows文件系统中。例如,在Linux文件系统中使用
docker run -v <host-path>:<container-path>。您也可以参考Microsoft的建议。- 只有当原始文件存储在Linux文件系统中时,Linux容器才能接收文件更改事件(“inotify事件”)。例如,一些Web开发工作流依赖inotify事件在文件更改时自动重新加载。
- 当文件从Linux文件系统绑定挂载时,性能远高于从Windows主机远程挂载。因此,请避免使用
docker run -v /mnt/c/users:/users,,其中/mnt/c是从Windows挂载的。 - 相反,从Linux shell中使用类似
docker run -v ~/my-project:/sources <my-image>的命令,其中~被Linux shell扩展为$HOME。
如果您担心
docker-desktop-data分发版的大小,请参阅Windows内置的WSL工具。- Docker Desktop 4.30及更高版本的安装不再依赖
docker-desktop-data分发版;相反,Docker Desktop会创建并管理自己的虚拟硬盘(VHDX)进行存储。(请注意,如果docker-desktop-data分发版已被早期版本的软件创建,Docker Desktop仍将继续使用它)。 - 从4.34及更高版本开始,Docker Desktop会自动管理托管VHDX的大小,并将未使用的空间返回给操作系统。
- Docker Desktop 4.30及更高版本的安装不再依赖
如果您担心CPU或内存使用情况,可以配置分配给WSL 2实用程序VM的内存、CPU和交换空间大小限制。