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 上获得更好的使用体验,建议启用自 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。

  1. 下载并安装最新版本的 适用于 Windows 的 Docker Desktop

  2. 按照常规安装说明安装 Docker Desktop。根据您使用的 Windows 版本,Docker Desktop 在安装过程中可能会提示您启用 WSL 2。请阅读屏幕显示的信息,并启用 WSL 2 功能以继续安装。

  3. Windows 开始 菜单启动 Docker Desktop。

  4. 导航到 设置

  5. 常规选项卡中,选择使用基于 WSL 2 的引擎

    如果您已在支持 WSL 2 的系统上安装了 Docker Desktop,则此选项默认已启用。

  6. 选择 应用并重启

现在,使用新的 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 支持:

  1. 确保发行版以 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
    
  2. 当 Docker Desktop 启动时,进入 设置 > 资源 > WSL 集成

    Docker-WSL 集成已在默认 WSL 发行版中启用,该发行版为 Ubuntu。如需更改默认 WSL 发行版,请运行以下命令:

    $ wsl --set-default <distribution name>
    
  3. 选择 应用并重启

注意

在 Docker Desktop 4.30 及更早版本中,Docker Desktop 安装了两个专用的内部 Linux 发行版 docker-desktopdocker-desktop-datadocker-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 分发版。

其他资源