WSL2 使用 Windows 上的 Docker Desktop

适用于 Linux 的 Windows 子系统 (WSL) 2 是由 Microsoft 构建的完整 Linux 内核,它允许 Linux 发行版在不管理虚拟机的情况下运行。通过在 WSL 2 上运行 Docker Desktop,用户可以利用 Linux 工作区并避免同时维护 Linux 和 Windows 生成脚本。此外,WSL 2 还改进了文件系统共享和启动时间。

Docker Desktop 使用 WSL 2 中的动态内存分配功能来改善资源消耗。这意味着 Docker Desktop 仅使用所需的 CPU 和内存资源量,同时允许 CPU 和内存密集型任务(如构建容器)运行得更快。

此外,使用 WSL 2,在冷启动后启动 Docker 守护程序所需的时间要快得多。

1. 先决条件

在打开 Docker 桌面 WSL 2 功能之前,请确保具有:

提示

为了获得更好的 WSL 体验,请考虑启用 WSLautoMemory回收自 WSL 1.3.10(实验性)起可用的设置。

此功能增强了 Windows 主机在 WSL 虚拟机中回收未使用内存的能力,从而确保提高其他主机应用程序的内存可用性。此功能对 Docker Desktop 特别有用,因为它可以防止 WSL VM 在 Docker 容器映像生成期间在 Linux 内核的页面缓存中保留大量内存(以 GB 为单位),而不会在 VM 中不再需要时将其释放回主机。

2. 打开 Docker 桌面 WSL 2

重要

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

  1. 下载并安装最新版本的适用于 Windows 的 Docker Desktop.
  2. 按照通常的安装说明安装 Docker Desktop。根据你使用的 Windows 版本,Docker Desktop 可能会在安装过程中提示你打开 WSL 2。阅读屏幕上显示的信息,然后打开 WSL 2 功能以继续。
  3. 从 Windows的“开始”菜单启动 Docker Desktop。
  4. 导航到 Settings
  5. General 选项卡中,选择 Expose daemon on tcp://localhost:2375 without TLS,暴露 2375 端口
  6. General 选项卡中,选择 Use the WSL 2 based engine 。如果已在支持 WSL 2 的系统上安装了 Docker Desktop,则默认情况下会打开此选项。
  7. 选择 Apply & Restart

现在,docker 命令可以使用新的 WSL 2 引擎在 Windows 上工作。

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

WSL 2 向 Windows 添加了对“Linux 发行版”的支持,其中每个发行版的行为都类似于 VM,但它们都运行在单个共享 Linux 内核之上。

Docker Desktop 不需要安装任何特定的 Linux 发行版。docker CLI 和 UI 都可以在 Windows 上正常工作,无需任何其他 Linux 发行版。但是,为了获得最佳的开发人员体验,我们建议至少安装一个额外的发行版并启用 Docker 支持:

  1. 确保分发在 WSL 2 模式下运行。WSL 可以在 v1 或 v2 模式下运行分发。若要检查 WSL 模式,请运行:
    • wsl.exe -l -v
  2. 要将 Linux 发行版升级到 v2,请运行:
    • wsl.exe --set-version (distro name) 2
  3. 若要将 v2 设置为将来安装的默认版本,请运行:
    • wsl.exe --set-default-version 2
  4. Docker Desktop 启动后,转到 Settings > Resources > WSL Integration
    • Docker-WSL 集成在默认 WSL 分发上启用,即Ubuntu的.若要更改默认 WSL 发行版,请运行:
      • wsl --set-default <distro name>
  5. 选择 Apply & Restart

注意

Docker Desktop 安装两个专用的内部 Linux 发行版和 .第一个 (docker-desktop) 用于运行 Docker 引擎 (docker-desktop),而第二个 (docker-desktop-data) 用于存储容器和映像。两者都不能用于一般开发。

原文链接:Docker Desktop WSL 2 backend on Windows | Docker Docs

4. 在 WSL 2 中安装和配置 Docker 客户端

打开你的 WSL 2 终端(比如 Ubuntu)。
你不需要安装 Docker 引擎,因为它已在 Windows 上运行。但你可能需要安装 Docker 客户端以便于在 WSL 2 终端中管理容器。
安装 Docker 客户端的命令通常为 sudo apt install docker-ce-cli。

如果已经安装了引擎,则先卸载所有,再重新安装客户端

先查询安装了哪些

卸载

重新安装 docker-ce-cli


为了让 Docker 客户端在 WSL 2 中与 Windows 的 Docker Desktop 通信,你需要确保 WSL 2 可以通过环境变量 DOCKER_HOST 访问 Docker 引擎。通常这是自动配置的,但如果需要,你可以手动添加 export DOCKER_HOST=tcp://localhost:2375 到你的 ~/.bashrc 或相应的 shell 配置文件中。

5. 验证安装

在 WSL 2 终端里,运行 docker run hello-world。这应该能够运行并显示一条消息,证明 Docker 客户端能够通过 Docker Desktop on Windows 控制 Docker 容器。

如果没有启动Widnows 下的 Docker Desktop,则会显示:

如果运行成功,就会显示如下:

查看 Windows Desktop Containers 下面会有 hello-world 的镜像

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部