Windows 上的 Docker Desktop WSL 2 后端

适用于 Linux 的 Windows 子系统 (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 VM 在 Docker 容器镜像构建期间在 Linux 内核的页面缓存中保留大量内存(以 GB 为单位),而不会在 VM 中不再需要时将其释放回主机。

打开 Docker Desktop WSL 2

重要

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

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

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

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

  4. 导航到 设置

  5. General 选项卡中,选择 Use WSL 2 based engine..

    如果您在支持 WSL 2 的系统上安装了 Docker Desktop,则默认情况下此选项处于打开状态。

  6. 选择应用并重新启动

现在,命令可以使用新的 WSL 2 引擎在 Windows 中使用。docker

提示

默认情况下,Docker Desktop 将 WSL 2 引擎的数据存储在 . 例如,如果要更改位置,例如,更改为另一个驱动器,您可以通过 Docker Dashboard 中的页面进行此操作。 有关此设置和其他 Windows 设置的更多信息,请参阅更改设置C:\Users\[USERNAME]\AppData\Local\Docker\wslSettings -> Resources -> Advanced

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

WSL 2 向 Windows 添加了对“Linux 发行版”的支持,其中每个发行版的行为类似于 VM,只是它们都运行在单个共享 Linux 内核之上。

Docker Desktop 不需要安装任何特定的 Linux 发行版。CLI 和 UI 在 Windows 上都可以正常工作,无需任何其他 Linux 发行版。但是,为了获得最佳的开发人员体验,我们建议至少安装一个额外的发行版并启用 Docker 支持: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 引擎,同时存储容器和镜像。两者都不能用于一般开发。docker-desktopdocker-desktop-datadocker-desktopdockerddocker-desktop-data

全新安装 Docker Desktop 4.30 及更高版本时,不再创建。相反,Docker Desktop 会创建并 管理自己的虚拟硬盘进行存储。该发行版仍处于创建状态,并用于运行 Docker 引擎。docker-desktop-datadocker-desktop

请注意,如果 Docker Desktop 版本 4.30 及更高版本已由早期版本的 Docker Desktop 创建,并且尚未全新安装或恢复出厂设置,则 Docker Desktop 版本 4.30 及更高版本将继续使用该发行版。docker-desktop-data

其他资源