而且,该办理方案使开拓不受您所拥有的操作系统的约束。 简而言之,纵然您的容器是Linux映像,也可以利用Windows或Mac进行开拓。
无论如何,在某些设置中,性能可能会降落,从而影响生产率。
从最近的Docker更新开始,Docker工程师增加了利用WSL2技能提高性能的可能性,从而在包括Windows在内的所有平台上供应了相同的开拓履历。

本文先容了为什么我们在Windows上可能存在性能问题,以及如何精确安装WSL2以提高性能。
WSL2如何改变DockerDocker如何事情
关于Docker的中央部分是它在Windows下的事情办法。由于它共享操作系统,而不是硬件,过去Windows上没有任何基于Linux的容器, 但是每个人都要Windows上利用Linux容器,为理解决这个问题, Docker工程师奥妙地采取的利用虚拟机监控程序(常日是Microsoft HyperV)运行虚拟机,并将VM OS共享到Docker容器。事情便是这样运作的,如下图。
这种架构的紧张问题是:
资源限定。 只管docker专为共享OS而设计,但管理程序仍在利用硬件,因此您须要为其分配资源。 这导致了与利用虚拟机时同样的性能问题。磁盘开销。 容器映像位于VM内,它以卷的形式存储文件,但是您可能希望共享Windows环境中的文件夹,尤其是在开拓时。 这是图中的赤色箭头来回及其影响性能。由于Windows上的Docker如果紧张用于开拓环境中运行Linux容器,那么性能并不主要。实际上,大多数办理方案都须要很少的资源来一次处理一个要求。但是,在某些情形下,这种性能很主要。
某些运用程序状态的可实行文件仅在个中编译和加载一次,因此磁盘延迟不会太多。利用.net或Java开拓,只需按下实行按钮,等待一分钟,然后您的运用程序就可以进行测试了,所有已编译的源代码或多或少都在RAM中,而您不须要读取硬盘。
相反,对付PHP或Python运用程序,则有所不同。由于它们没有任何运用程序状态,因此每个要求都是独立阐明的,因此您须要每次扫描并加载所需的所有文件。这意味着要读取大量文件,因此您的等待韶光将乘以大量文件。
对付此系统,在Windows上利用卷映射非常昂贵,并且会降落性能。您可以利用安装到Linux OS的卷,但是在这种情形下,您将无法从Windows UI进行编辑。
因此,在大多数情形下,我们接管了最慢的性能(在大多数情形下,对付开拓环境是可接管的),或者在其他情形下,我们被急迫换到Linux,这抵消了利用Docker具有多操作系统可用性的上风。
什么是WSL2WSL(Linux的Windows子系统)是用于在Windows受骗地运行Linux二进制可实行文件的兼容性层。 从Windows 10开始它就可以利用,并且可以在Windows内部利用Linux而不该用虚拟机。 自2019年6月以来,Windows 10随附了WSL(WSL 2)的增强功能。此更新通过一组优化的Hyper-V功能带来了许多性能改进。
简而言之,您现在在Windows机器中拥有Linux发行版比运行虚拟机更快。
好是Docker Desktop支持它,并且可以增强您的容器。
WSL2如何改变Docker利用WLS2和Docker的结合,我们实际上跳过了一步。
Windows和Linux文件系统是相互共享的:您可以通过Windows访问共享驱动器\\WSL$ 来查看Linux,或者可以通过/mtn/ c来查看Windows。
docker容器利用Linux WSL,没有任何资源限定,并且具有更好的性能。
在这种情形下,有很多坏。 仍旧可以共享Windows文件夹,但性能比标准情形下差。 这不是Java或.net中的问题,也不是可容忍的问题,但是使PHP开拓不可行。
幸运的是,有一个办理方案将利用WSL2的好处与丰富的开拓履历结合在一起。 实际上,Visual Studio Code可以在WSL2子系统上远程事情,因此您可以实行以下操作:
将卷保留在WSL2内,作为常规卷安装,以便得到最佳的文件系统访问性能。
照常在Windows上事情,在Linux上编辑代码。
很明显,如果您在IDE中双击一个项目或将其保存时要花更多的钱访问文件,这是一个非常可接管的办理方案。 问题与大量文件负载有关。
Visual Studio做得更好。 它具有一个扩展,可以与它们的远程子系统进行远程交互,因此您可以将UI保留在Windows中,但可以从Linux内部的实例利用引擎。 因此,作为开拓职员的用户体验也很好。
好了,一旦我们理解了如何以及为什么可以提高Docker的性能,我们只须要遵照一些大略的步骤即可完成事情。
我们将须要实行几个步骤,但是,从更高的角度来看,我们必须:
启用WSL2环境配置IDE并开始编码。启用WSL2环境本节解释如何安装WSL2版本,以准备开始利用Docker和WSL2进行编码。
启用WSL第一步启用了Window子系统。 您必须在具有管理权限的命令行上运行它。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
第二个命令激活虚拟机平台(是的,WSL仍旧在后台利用hyper-v)。 如果您的PC尚未打开虚拟化功能,则可能须要通过BIOS进行设置。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
安装WSL2更新
安装和配置WSL2的末了一步是安装更新。 这是一个大略的MSI软件包,因此您可以下载并双击安装。
https://docs.microsoft.com/it-it/windows/wsl/install-win10
将WSL2设置为默认值将版本2设置为所有子系统的默认设置。
wsl --set-default-version 2
从Microsoft市场安装ubuntu
要在子系统上运行Docker,我们须要下载Linux发行版。 由于Microsoft +开源现已成为现实,因此可以直接从Microsoft商店购买。 我利用了Ubunto,它只有440MB,以是不用担心会占用磁盘空间。
完成此步骤后,您将看到所有安装为子系统的操作系统。
wsl --list --verbose
您该当在WSL 2上看到docker,docker-data,ubuntu。
激活Docker WSL2扩展在Docker Desktop内部,只需检讨配置并启用WSL2功能。 可能须要重新启动docker或重新启动PC。
警告:从标准模式切换到WSL2时,您将须要重新下载所有映像(位于Hyper-v VM而不是WSL2内)。 此外,命名卷中的数据存储在VM中,因此您不会在新的WSL2打算机中找到它们。 因此,首先,从Docker容器提取并备份所有干系数据。 根据本地设置,您可能会丢失数据。
选中“利用基于WSL2的引擎”然后,您解锁WSL集成面板,您可以在个中激活Ubuntu发行版。
安装VsCode扩展
末了一步是安装和下载Visual Studio插件。 常日,您可以通过单击网站上的安装或通过Visual Studio Code UI来实行此操作。
插件地址: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl
WSL2利用此时,所有步骤都完成了,您可以开始编码了。
对付开始编码,您有两个选择:从WSL或Windwsow开始。
就个人而言,我喜好第二个,由于它非常独立。
1.命令行:
1.打开WSL终端或在shell中输入命令“ WSL”。 由于Ubunto是首选的子系统,因此您将位于个中。
2.输入“code .”。 这将在Windows打算机上打开Visual Studio Code。(如果不起浸染,须要先将vscode 安装目录下的bin文件夹加入linux系统变量)
2.UI
1.打开Visual Studio代码。
2.单击WSL框(左下角,底部工具栏中的绿色按钮)或F1 + Remore WLS +新窗口
3.新窗口与Linux OS连接
从那一刻起,您就可以利用Visual Studio Code来完成所需的统统。 实际上,您可以从文件树中打开一个终端。 终端将位于WSL机器内部,如果您运行docker-compose up,您将在主机docker系统上激活容器。 您还可以利用git工具来处理提交。
由于许多缘故原由,许多开拓职员正在利用Windows作为开拓环境。与Linux比较,这是得到最佳程序兼容性或更好的用户体验的常见选择。其他人正在利用Windows来得到比Mackbook便宜的条记本电脑。
Docker在所有OS系统上都具有相同的开拓履历,但在某些情形下可能会导致Windows上的性能问题。
WSL2可以提高性能,但是须要把稳将文件放置在何处以及如何创建卷。
完成这些步骤后,您便可以享受与Linux相同的性能,并得到舒适的Windows用户体验。