Windows 10上的Ubuntu:Docker vs WSL


11

我了解目前可以通过两种不同的方式在Windows 10上运行Ubuntu:

  1. 使用Windows Linux子系统(WSL)。
  2. 为Windows 10安装docker,并在Ubuntu中使用容器。

但是,我找不到关于它们之间的区别(谈论应用程序)以及优点和缺点的易于理解的解释。

我发现了一篇有关在WSL上使用docker的文章:通过(Windows Linux Subsystem)和Docker的Ubuntu。但是我正在谈论直接在Windows 10上使用它。因此,我将感谢您提供有关这两个方面的所有信息。


我都不是任何人都能写出答案,但是我的投票还是投给了Docker。原因是Docker意味着虚拟化,因此事情应该可以正常工作。另一方面,WSL充满了错误。它确实为基准测试,娱乐和大部分开发工作。但是如果您要部署一些严肃的东西,那不是您的选择,至少现在还不是。
Hi-Angel

Answers:


14

更新2020/02/18以反映WSL2中引入的更改

嗨!Microsoft PM在WSL和命令行上工作。

WSL允许您直接在Windows上运行未经修改的本机Linux ELF-64二进制文件,并使您可以在Windows“主机” OS上运行自己喜欢的Linux工具。

WSL1采用了一种在NT内核顶部添加Linux syscall兼容层的方法,允许Linux二进制文件在NT顶部运行,与主机OS共享相同的基础文件系统,网络,进程列表等。

另一方面,即将发布的WSL2在Linux容器内的真正Linux内核之上,轻量级VM内运行发行版的二进制文件,该VM仅分配其运行的应用程序所需的RAM,然后将释放的RAM释放给主机操作系统。这提供了100%Linux兼容性,并允许您的Linux工具以接近本机的性能运行,并消耗了主机所需的最少资源,从而确保您的计算机快速流畅地运行。

在WSL2之前,可以在WSL1中运行Docker客户端,用它来驱动运行在本地主机上Hyper-V之上的Windows的Docker或管理远程Docker服务器。但是由于许多技术原因,人们无法在WSL1上运行Docker Engine。

但是,您可以在WSL2的Docker中执行相同的操作,但是如果愿意,还可以在WSL之上运行Docker Engine本身。这是Docker在Windows桌面上运行Docker的首选和未来之路

要了解有关WSL的更多信息,请在此处查看视频和文档:https : //aka.ms/learnwsl


我认为这个答案是针对WSL的,WSL 2运行一个自定义的Linux内核,该内核与Windows交互。我相信自定义Windows Linux内核可以在VM中运行。
乔丹·斯图尔特

1
它做了。刚刚发布了更新以更好地反映我们的WSL2现实:)
Rich Turner

2

那是对的。您没有提及的一件事是,即使使用快速的ssd /许多ram / 8-core xeon cpu,WSL在IO上目前也相当缓慢。在01/2019中这仍然是一个问题。我只是在使用三星SSD的工作站上执行了ray @ DESKTOP-O0MT13B:/ mnt / c / Users / rayjh $ dd if = / dev / zero of = test bs = 64k count = 16k conv = fdatasync / s。

运行裸机ubuntu LTS,此盒子将获得数倍的性能。当您尝试将WSL与VSCODE结合使用时,不要介意无尽的问题。

我正在从此处擦拭Windows 10并安装ubuntu 18.04LTS。


您不需要有毒,尤其是在最后。相反,请告诉我们您做了什么调查导致问题的原因,是否为已知问题,以及是否有人在解决这些问题。我确定他们是。而且,您不需要卸载Windows,只需要安装hyper-v管理器并快速安装Ubuntu,如果您想在虚拟Linux桌面内部工作,就可以使用Linux开发环境。否则,请继续使用WSL,然后等待问题解决。97 MB / s并不慢。
Paul-Sebastian Manole

AFAIK的速度问题与Windows文件访问子系统有关,并且一种解决方法正在进行中。
Paul-Sebastian Manole

WSL似乎仍然很慢。但是它确实具有非常快的启动时间,并允许使用常见的linux cli工具。映射linux和Windows文件系统似乎很复杂。
乔丹·斯图尔特

它变得明显更快。但是我尝试使用miniconda并安装软件包,但是仍然有点慢。
rayj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.