Docker Desktop 在 Windows 上的 WSL 2 后端
Windows Subsystem for Linux (WSL) 2 是由 Microsoft 构建的完整 Linux 内核,可让您在无需管理虚拟机的情况下运行 Linux 发行版。借助在 WSL 2 上运行的 Docker Desktop,用户可以利用 Linux 工作空间,避免同时维护 Linux 和 Windows 构建脚本。此外,WSL 2 还改善了文件系统共享和启动时间。
Docker Desktop 利用 WSL 2 中的动态内存分配功能来优化资源消耗。这意味着 Docker Desktop 仅使用其实际所需的 CPU 和内存资源,同时允许容器构建等 CPU 和内存密集型任务运行得更快。
此外,借助 WSL 2,在冷启动后启动 Docker 守护进程所需的时间显著缩短。
前提条件
在启用 Docker Desktop 的 WSL 2 功能之前,请确保您已准备好以下内容:
- 至少需要 WSL 1.1.3.0 版本,但建议使用最新版本的 WSL, 以避免 Docker Desktop 无法按预期工作。
- 遇到了 Docker Desktop for Windows 系统要求。
- 已在 Windows 上安装 WSL 2 功能。详细操作说明,请参阅 Microsoft 官方文档。
提示
为了在 WSL 上获得更好的使用体验,建议启用自 WSL 1.3.10 起提供的 WSL autoMemoryReclaim 设置(实验性功能)。
此功能增强了 Windows 主机回收 WSL 虚拟机内未使用内存的能力,从而提升其他主机应用程序的内存可用性。该功能对 Docker Desktop 尤为有益,因为它可防止 WSL 虚拟机在构建 Docker 容器镜像期间,将大量内存(以 GB 为单位)保留在 Linux 内核的页面缓存中,而当这些内存在虚拟机内不再需要时,又未能及时释放回主机。
启用 Docker Desktop 的 WSL 2 功能
重要
为避免在 Docker Desktop 中使用 WSL 2 时产生任何潜在冲突,在安装 Docker Desktop 之前,您必须先卸载通过 Linux 发行版直接安装的任何旧版 Docker Engine 和 CLI。
下载并安装最新版本的 适用于 Windows 的 Docker Desktop。
按照常规安装说明安装 Docker Desktop。根据您使用的 Windows 版本,Docker Desktop 在安装过程中可能会提示您启用 WSL 2。请阅读屏幕显示的信息,并启用 WSL 2 功能以继续安装。
从 Windows 开始 菜单启动 Docker Desktop。
导航到 设置。
在常规选项卡中,选择使用基于 WSL 2 的引擎。
如果您已在支持 WSL 2 的系统上安装了 Docker Desktop,则此选项默认已启用。
选择 应用并重启。
现在,使用新的 WSL 2 引擎,docker 条命令可在 Windows 上运行。
提示
默认情况下,Docker Desktop 将 WSL 2 引擎的数据存储在
C:\Users\[USERNAME]\AppData\Local\Docker\wsl。 如果您想更改存储位置(例如,更改为其他驱动器),可以通过 Docker 仪表板中的Settings -> Resources -> Advanced页面进行设置。 有关此项设置及其他 Windows 设置的更多信息,请参阅 更改设置
在 WSL 2 发行版中启用 Docker 支持
WSL 2 为 Windows 添加了对“Linux 发行版”的支持,每个发行版的行为类似于虚拟机,但所有发行版均运行在单一共享的 Linux 内核之上。
Docker Desktop 并不需要安装特定的 Linux 发行版。docker 命令行工具和用户界面在 Windows 上无需安装任何额外的 Linux 发行版即可正常运行。然而,为了获得最佳的开发者体验,我们建议至少安装一个额外的 Linux 发行版,并启用 Docker 支持:
确保发行版以 WSL 2 模式运行。WSL 可以以 v1 或 v2 模式运行发行版。
要检查 WSL 模式,请运行:
$ wsl.exe -l -v要将 Linux 发行版升级到 v2,请运行:
$ wsl.exe --set-version (distribution name) 2要将 v2 设置为未来安装的默认版本,请运行:
$ wsl.exe --set-default-version 2当 Docker Desktop 启动时,进入 设置 > 资源 > WSL 集成。
Docker-WSL 集成已在默认 WSL 发行版中启用,该发行版为 Ubuntu。如需更改默认 WSL 发行版,请运行以下命令:
$ wsl --set-default <distribution name>选择 应用并重启。
注意
在 Docker Desktop 4.30 及更早版本中,Docker Desktop 安装了两个专用的内部 Linux 发行版
docker-desktop和docker-desktop-data。docker-desktop用于运行 Docker 引擎dockerd,而docker-desktop-data用于存储容器和镜像。二者均不可用于通用开发。对于 Docker Desktop 4.30 及更高版本的全新安装,
docker-desktop-data分区不再创建。取而代之的是,Docker Desktop 会创建并管理其自己的虚拟硬盘用于存储。docker-desktop分发版仍会被创建并用于运行 Docker 引擎。请注意,Docker Desktop 4.30 及更高版本若已存在由早期版本创建的
docker-desktop-data分发版,且该分发版未经过全新安装或恢复出厂设置,则将继续使用该docker-desktop-data分发版。