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 容器镜像构建期间在 Linux 内核的页面缓存中保留大量内存(以 GB 为单位),而无需在虚拟机中不再需要时将其释放回主机。
启用 Docker Desktop WSL 2
重要
为了避免使用 WSL 2 on Docker Desktop 时的任何潜在冲突,您必须卸载任何之前直接通过 Linux 发行版安装的 Docker Engine 和 CLI 版本,然后再安装 Docker Desktop。
下载并安装最新版本的 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 仪表板中的设置 -> 资源 -> 高级
页面进行操作。有关此设置以及其他 Windows 设置的更多信息,请参阅 在 Windows 上更改 Docker Desktop 设置
在 WSL 2 发行版中启用 Docker 支持
WSL 2 为 Windows 添加了对“Linux 发行版”的支持,其中每个发行版都像虚拟机一样运行,但它们都运行在单个共享 Linux 内核之上。
Docker Desktop 不需要安装任何特定的 Linux 发行版。docker
CLI 和 UI 都可以在没有额外 Linux 发行版的情况下从 Windows 正常工作。但是,为了获得最佳的开发人员体验,我们建议您至少安装一个额外的发行版并启用 Docker 支持
确保发行版在 WSL 2 模式下运行。WSL 可以以 v1 或 v2 模式运行发行版。
要检查 WSL 模式,请运行
$ wsl.exe -l -v
要将 Linux 发行版升级到 v2,请运行
$ wsl.exe --set-version (distro name) 2
要将 v2 设置为未来安装的默认版本,请运行
$ wsl.exe --set-default-version 2
当 Docker Desktop 启动时,请转到**设置** > **资源** > **WSL 集成**。
Docker-WSL 集成已在默认的 WSL 发行版上启用,该发行版是 Ubuntu。要更改您的默认 WSL 发行版,请运行
$ wsl --set-default <distro name>
选择**应用并重启**。
注意
Docker Desktop 安装了两个特殊用途的内部 Linux 发行版
docker-desktop
和docker-desktop-data
。第一个 (docker-desktop
) 用于运行 Docker 引擎 (dockerd
),而第二个 (docker-desktop-data
) 存储容器和镜像。这两个发行版都不能用于一般开发。