Windows 上的 Docker Desktop WSL 2 后端

Windows Subsystem for Linux (WSL) 2 是由微软构建的完整 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 autoMemoryReclaim 设置,该设置自 WSL 1.3.10(实验性)起可用。

此功能增强了 Windows 主机在 WSL 虚拟机中回收未用内存的能力,确保为其他主机应用程序提供更好的内存可用性。此功能对于 Docker Desktop 尤其有用,因为它可以防止 WSL 虚拟机在 Docker 容器镜像构建期间在 Linux 内核的页面缓存中保留大量内存(以 GB 为单位),而无需在虚拟机中不再需要时将其释放回主机。

启用 Docker Desktop WSL 2

重要

为了避免使用 WSL 2 on Docker Desktop 时的任何潜在冲突,您必须卸载任何之前直接通过 Linux 发行版安装的 Docker Engine 和 CLI 版本,然后再安装 Docker Desktop。

  1. 下载并安装最新版本的 Docker Desktop for Windows.

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

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

  4. 导航到**设置**。

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

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

  6. 选择**应用并重启**。

现在,docker 命令使用新的 WSL 2 引擎从 Windows 工作。

提示

默认情况下,Docker Desktop 将 WSL 2 引擎的数据存储在 C:\Users\[USERNAME]\AppData\Local\Docker\wsl 中。如果您想更改位置,例如更改为另一个驱动器,您可以通过 Docker 仪表板中的 设置 -> 资源 -> 高级 页面进行操作。有关此设置以及其他 Windows 设置的更多信息,请参阅 在 Windows 上更改 Docker Desktop 设置

在 WSL 2 发行版中启用 Docker 支持

WSL 2 为 Windows 添加了对“Linux 发行版”的支持,其中每个发行版都像虚拟机一样运行,但它们都运行在单个共享 Linux 内核之上。

Docker Desktop 不需要安装任何特定的 Linux 发行版。docker CLI 和 UI 都可以在没有额外 Linux 发行版的情况下从 Windows 正常工作。但是,为了获得最佳的开发人员体验,我们建议您至少安装一个额外的发行版并启用 Docker 支持

  1. 确保发行版在 WSL 2 模式下运行。WSL 可以以 v1 或 v2 模式运行发行版。

    要检查 WSL 模式,请运行

    $ wsl.exe -l -v
    

    要将 Linux 发行版升级到 v2,请运行

    $ wsl.exe --set-version (distro name) 2
    

    要将 v2 设置为未来安装的默认版本,请运行

    $ wsl.exe --set-default-version 2
    
  2. 当 Docker Desktop 启动时,请转到**设置** > **资源** > **WSL 集成**。

    Docker-WSL 集成已在默认的 WSL 发行版上启用,该发行版是 Ubuntu。要更改您的默认 WSL 发行版,请运行

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

注意

Docker Desktop 安装了两个特殊用途的内部 Linux 发行版 docker-desktopdocker-desktop-data。第一个 (docker-desktop) 用于运行 Docker 引擎 (dockerd),而第二个 (docker-desktop-data) 存储容器和镜像。这两个发行版都不能用于一般开发。

其他资源