最佳实践
始终使用最新版本的 WSL。您至少需要使用 WSL 版本 1.1.3.0,否则 Docker Desktop 可能无法按预期工作。测试、开发和文档均基于最新的内核版本。较旧版本的 WSL 可能会导致
- Docker Desktop 定期挂起或在升级时挂起
- 通过 SCCM 部署失败
vmmem.exe
占用所有内存- 网络过滤策略全局应用,而不是应用于特定对象
- 容器出现 GPU 故障
为了在使用绑定挂载文件时获得最佳的文件系统性能,建议您将绑定挂载到 Linux 容器中的源代码和其他数据存储在 Linux 文件系统中,而不是 Windows 文件系统中。例如,使用 Linux 文件系统中的
docker run -v <host-path>:<container-path>
,而不是 Windows 文件系统中的。您还可以参考 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-镜像>
的命令,其中~
由 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 实用虚拟机 的内存、CPU 和交换空间大小的限制。