最佳实践
始终使用最新版本的WSL。最低要求必须使用WSL版本1.1.3.0,否则Docker Desktop可能无法正常工作。测试、开发和文档均基于最新内核版本。较旧版本的WSL可能导致:
- Docker Desktop 偶尔会卡顿或在升级时卡住
- 通过SCCM部署失败
- The
vmmem.exeto consume all memory - 全局应用的网络过滤策略,而非特定对象
- 容器中的 GPU 故障
为了在绑定挂载文件时获得最佳的文件系统性能,建议将源代码和其他绑定挂载到 Linux 容器中的数据存储在 Linux 文件系统中。例如,在 Linux 文件系统中使用
docker run -v <host-path>:<container-path>,而不是 Windows 文件系统。您也可以参考微软的 建议。- Linux 容器仅在原始文件存储于 Linux 文件系统中时,才能接收到文件更改事件,即“inotify 事件”。例如,某些 Web 开发工作流依赖于 inotify 事件,以便在文件发生更改时自动重新加载。
- 当文件从 Linux 文件系统绑定挂载,而不是从 Windows 主机远程挂载时,性能要高得多。因此,在
/mnt/c是从 Windows 挂载的情况下,应避免使用docker run -v /mnt/c/users:/users,。 - 相反,在 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 和交换空间大小限制。