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版本1.1.3.0,但最好是使用最新版本的WSL,以避免Docker Desktop无法按预期工作。
- 满足Docker Desktop for Windows的系统要求。
- 在Windows上安装了WSL 2功能。有关详细说明,请参阅 Microsoft文档。
提示
为了在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 版本。
下载并安装最新版本的 Docker Desktop for Windows。
按照常规的安装说明安装Docker Desktop。根据您使用的Windows版本,Docker Desktop在安装过程中可能会提示您启用WSL 2。阅读屏幕上显示的信息并启用WSL 2功能以继续。
从Windows 开始菜单启动 Docker Desktop。
导航到设置。
从常规选项卡中,选择使用基于WSL 2的引擎。
如果您在支持WSL 2的系统上安装了Docker Desktop,此选项默认是开启的。
选择应用并重启。
现在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 支持:
确保发行版在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当Docker Desktop启动时,转到设置 > 资源 > WSL集成。
Docker-WSL 集成已在默认的 WSL 发行版上启用,该发行版是 Ubuntu。要更改您的默认 WSL 发行版,请运行:
$ wsl --set-default <distribution name>如果WSL集成在资源下不可用,Docker可能处于Windows容器模式。在任务栏中,选择Docker菜单,然后切换到Linux容器。
选择应用并重启。
注意
在Docker Desktop 4.30及更早版本中,Docker Desktop安装了两个特殊用途的内部Linux发行版
docker-desktop和docker-desktop-data。docker-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及更高版本将继续使用它。