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容器镜像构建期间保留大量的内存(以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. 选择**应用并重启**。

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

提示

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

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

WSL 2 为 Windows 添加了对“Linux 发行版”的支持,其中每个发行版都像虚拟机一样运行,但它们都在单个共享的 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>
    
  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 创建了docker-desktop-data发行版并且没有进行全新安装或恢复出厂设置,则它将继续使用该发行版。

其他资源