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后端之前,必须完成以下步骤:
-
安装Windows 10 2004版或更高版本。
-
在Windows上启用WSL 2功能。有关详细说明,请参阅用于 Linux 的 Windows 子系统安装指南 (Windows 10)。
PS:参照文档安装Linux分发版,完成后先更新WSL 2 Linux 内核再启动Linux 分发版,Linux分发版安装完成后直接启动可能报错。错误代码:0x800706be
-
下载并安装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版本之前确保已完成“先决条件”部分中描述的步骤。
-
按照通常的安装说明安装Docker Desktop。如果您运行的是受支持的系统,Docker Desktop会在安装期间提示您启用WSL2。阅读屏幕上显示的信息并启用WSL 2以继续。
-
启动Docker Desktop。
-
从Docker菜单中,选择Settings -> General。
-
选择
Use WSL 2 based engine
复选框。 -
点击 Apply & Restart
-
确保分发在WSL2模式下运行。WSK可以在v1或v2模式下运行发行版。
要检查WSL模式,请运行
wsl -l -v
要将现有的Linux发行版升级到v2,请运行:
wsl --set-version (distro name) 2
-
当Docker Desktop重新启动时,转到Settings>Resources>WSL Integration。
WSL集成将在您的默认WSL发行版上启用。要更改默认的WSL发行版,请运行
wsl --set-default <distro name>
例如,要将Ubuntu设置为默认的WSL发行版,请运行wsl --set-default ubuntu
。
或者,选择要在其上启用wsl2的任何附加发行版。
-
点击 Apply & Restart
用Docker 和 WSL 2开发
以下部分介绍如何开始使用Docker和WSL2开发应用程序。我们建议您将代码保存在默认的Linux分发中,以获得使用Docker和wsl2的最佳开发体验。在DockerDesktop上启用WSL2之后,您可以开始在Linux发行版中使用代码,理想情况下,您的IDE仍在Windows中。如果您使用的是VS Code,那么这个工作流可能非常直截了当。
- 打开VSCode并安装远程-WSL扩展。这个扩展允许您使用Linux发行版中的远程服务器和仍在Windows上的IDE客户端。
现在,您可以远程使用VSCode。为此,请打开终端并键入:
wsl
code .
这会打开一个新的VSCode,它远程连接到你默认的Linux发行版,您可以在屏幕的下角进行检查。
或者,您可以在开始菜单中键入默认Linux发行版的名称,打开它,然后运行code
。
当您在VS Code中时,您可以从您的Windows计算机使用VS Code中的终端来提取代码,并开始本地工作。
最佳方法
-
在绑定装载文件时获取最好的文件系统性能:
-
在Linux文件系统存储源代码和其他被捆绑装载到Linux容器的数据(i.e.,with
docker 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标签来让我们知道你的反馈。