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尤其有用,因为它可以防止WSL虚拟机在Docker容器镜像构建期间保留大量的内存(以GB为单位)在Linux内核的页面缓存中,而无需在虚拟机中不再需要时将其释放回主机。
启用Docker Desktop WSL 2
重要
为了避免在Docker Desktop上使用WSL 2时出现任何潜在冲突,您必须在安装Docker Desktop之前卸载之前通过Linux发行版直接安装的任何版本的Docker Engine和CLI。
下载并安装最新版本的适用于 Windows 的 Docker Desktop。
按照常规安装说明安装 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 为 Windows 添加了对“Linux 发行版”的支持,其中每个发行版都像虚拟机一样运行,但它们都在单个共享的 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>
选择**应用并重启**。
注意
在 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 4.30 及更高版本之前已经由早期版本的 Docker Desktop 创建了
docker-desktop-data
发行版并且没有进行全新安装或恢复出厂设置,则它将继续使用该发行版。