Docker Desktop WSL 2 后端

原文:Docker Desktop WSL 2 backend

Docker Desktop WSL 2 后端

Windows Subsystem for Linux(WSL)2 采用了一个重大的体系结构变化,因为它是由Microsoft构建的完整的Linux内核,允许Linux容器在本机运行而无需模拟运行。在WSL 2上运行的Docker Desktop,用户可以利用Linux工作区并避免维护Linux和Windows构建脚本。此外,wsl2还改进了文件系统共享、引导时间,并允许Docker桌面用户访问一些很酷的新功能。
Docker Desktop使用WSL2中的动态内存分配功能,大大提高了资源消耗。这意味着,Docker Desktop只使用所需数量的CPU和内存资源,同时使CPU和内存密集型任务(如构建容器)运行得更快。
另外,使用WSL 2,冷启动后启动Docker守护进程所需的时间明显更快。启动Docker守护进程所需时间不到10秒,而在Docker Deskto的前一版本中,这一时间几乎为一分钟。

先决条件

在安装Docker Desktop WSL 2后端之前,必须完成以下步骤:

  1. 安装Windows 10 2004版或更高版本。

  2. 在Windows上启用WSL 2功能。有关详细说明,请参阅用于 Linux 的 Windows 子系统安装指南 (Windows 10)

    PS:参照文档安装Linux分发版,完成后先更新WSL 2 Linux 内核再启动Linux 分发版,Linux分发版安装完成后直接启动可能报错。错误代码:0x800706be

  3. 下载并安装Linux内核更新包。详见更新 WSL 2 Linux 内核

下载

下载Docker Desktop Stable 2.3.0.2版或者以后的版本
地址:https://www.docker.com/products/docker-desktop

安装

在安装Docker Desktop Stable 2.3.0.2版本之前确保已完成“先决条件”部分中描述的步骤。

  1. 按照通常的安装说明安装Docker Desktop。如果您运行的是受支持的系统,Docker Desktop会在安装期间提示您启用WSL2。阅读屏幕上显示的信息并启用WSL 2以继续。

  2. 启动Docker Desktop。

  3. 从Docker菜单中,选择Settings -> General。

  4. 选择Use WSL 2 based engine复选框。

  5. 点击 Apply & Restart

  6. 确保分发在WSL2模式下运行。WSK可以在v1或v2模式下运行发行版。
    要检查WSL模式,请运行
    wsl -l -v
    要将现有的Linux发行版升级到v2,请运行:
    wsl --set-version (distro name) 2

  7. 当Docker Desktop重新启动时,转到Settings>Resources>WSL Integration。
    WSL集成将在您的默认WSL发行版上启用。要更改默认的WSL发行版,请运行
    wsl --set-default <distro name>
    例如,要将Ubuntu设置为默认的WSL发行版,请运行wsl --set-default ubuntu
    或者,选择要在其上启用wsl2的任何附加发行版。

  8. 点击 Apply & Restart

用Docker 和 WSL 2开发

以下部分介绍如何开始使用Docker和WSL2开发应用程序。我们建议您将代码保存在默认的Linux分发中,以获得使用Docker和wsl2的最佳开发体验。在DockerDesktop上启用WSL2之后,您可以开始在Linux发行版中使用代码,理想情况下,您的IDE仍在Windows中。如果您使用的是VS Code,那么这个工作流可能非常直截了当。

  1. 打开VSCode并安装远程-WSL扩展。这个扩展允许您使用Linux发行版中的远程服务器和仍在Windows上的IDE客户端。
    现在,您可以远程使用VSCode。为此,请打开终端并键入:
    wsl
    code .

这会打开一个新的VSCode,它远程连接到你默认的Linux发行版,您可以在屏幕的下角进行检查。

或者,您可以在开始菜单中键入默认Linux发行版的名称,打开它,然后运行code

当您在VS Code中时,您可以从您的Windows计算机使用VS Code中的终端来提取代码,并开始本地工作。

最佳方法

  • 在绑定装载文件时获取最好的文件系统性能:

    • 在Linux文件系统存储源代码和其他被捆绑装载到Linux容器的数据(i.e.,withdocker run -v <host path>:<container path>),而不是在Windows文件系统。

    • 如果原始文件存储在Linux文件系统中,Linux容器只接受文件改变事件(“inotify事件”)。

    • 当文件捆绑装载在Linux文件系统中,而不是Windows时,性能要高得多。所以要避免docker run -v /mnt/c/users:/users(其中/mnt/c从Windows装载)。

    • 取而代之的是,在Linux shell中使用一个命令,如docker run -v ~/my-project:/sources <my-image>其中~由Linux shell扩展为$HOME

  • 如果您担心docker桌面数据VHDX的大小,或者需要更改它,请查看WSL tooling built into Windows .

  • 如果您担心CPU或内存使用情况,可以配置限制给分配到WSL 2 utility VM的内存、CPU、交换大小。

  • 为了避免一切在Docker Desktop上使用WSL2的潜在冲突,在安装Docker Desktop之前,您必须卸载Docker Engine的所有早期版本以及直接通过Linux发行版安装的CLI。

反馈

你的反馈对我们很重要。请通过在Docker Desktop for Windows GitHub存储库创建问题并添加WSL 2标签来让我们知道你的反馈。

posted @ 2020-08-25 18:16  木氷  阅读(2992)  评论(0编辑  收藏  举报