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尤其有益,因为它防止了在Docker容器镜像构建期间,WSL虚拟机在Linux内核的页面缓存中保留大量内存(以GB计),而在虚拟机中不再需要时不会将其释放回主机。

开启 Docker Desktop WSL 2

重要

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

  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 Dashboard 的 设置 -> 资源 -> 高级 页面进行操作。 了解更多关于此设置和其他 Windows 设置的信息,请访问 更改设置

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

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

Docker Desktop 不需要安装任何特定的 Linux 发行版。docker CLI 和 UI 在 Windows 上都可以正常工作,无需任何额外的 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>
    

    如果WSL集成资源下不可用,Docker可能处于Windows容器模式。在任务栏中,选择Docker菜单,然后切换到Linux容器

  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-data发行版已经由早期版本的Docker Desktop创建并且没有进行全新安装或恢复出厂设置,Docker Desktop 4.30及更高版本将继续使用它。

额外资源