Python社区  »  docker

启动时间只需2秒,Docker Desktop for WSL 2将于7月发布预览版本

高效开发运维 • 2 月前 • 45 次点击  

作者 | SIMON FERQUEL
译者 | 田晓旭
Docker 的目标之一就是在桌面环境中提供使用容器的最佳体验,无论是在 Windows、Mac 还是 Linux 上工作的用户都可以获得尽可能接近 Native 的体验。

为了实现这一目标,我们花了很多时间与微软和苹果提供的软件栈一起工作。2016 年,我们引入了 Windows Linux 子系统 (WSL),此后,我们一直在密切关注,以便在产品中更好得利用它。

最初,WSL 给人的印象是在努力模仿 Linux 内核上的 Windows,但是由于 Windows 和 Linux 之间存在的根本差异,很多东西无法做到与 Native Linux 相同实现,而这意味着它无法直接运行在 Docker 引擎和 Kubernetes WSL 内部。而 Docker Desktop 开发了一个使用 Hyper-V vm 和 LinuxKit 的替代解决方案,以实现用户期望的无缝集成。

刚刚,微软宣布了一个 WSL 2 的主要架构变化:他们没有使用仿真,而是提供了一个运行在轻量级 VM 中的真正的 Linux 内核。这种方法在架构上非常接近于我们今天使用的 LinuxKit 和 Hyper-V,但是比 Docker 更轻量级,并且能够与 Windows 更紧密地集成。Docker 守护进程在其上运行得很好,性能表现优异,在我们开发人员的机器上,从冷启动到在 WSL 2 中运行只需大约 2 秒。对此,我们感到很兴奋,也很高兴和大家宣布:我们正在开发 Docker Desktop for WSL 2 的新版本,并计划在 7 月份进行公开预览。它将使得 Docker 容器开发的体验更丰富,由于 WSL 2 适用于 Windows 10 家庭版,所以 Docker Desktop 也适用于 Windows 10 家庭版。

与微软合作  

为了使 Docker Desktop 成为 Windows 上使用 Docker 的最佳方式,我们携手微软一起合作。微软提供了 WSL 2 的早期版本,以便评估这项技术是否适合我们的产品,同时进行一些反馈。我们使用了不同的方法构建原型,所以接下来想和大家分享一下我们未来的工作。

未来的 Docker Desktop  

我们使用 WSL 2 集成包替换了当前使用的 Hyper-V VM。这个集成包提供与当前 Docker Desktop VM 相同的功能:Kubernetes 1-click setup、自动更新、透明 HTTP 代理配置、从 Windows 访问守护进程、透明绑定 Windows 文件挂载等等。

这个集成包包含了运行 Docker 和 Kubernetes 所需的服务器端组件,以及用于与 WSL 中组件交互的 CLI 工具。

Docker Desktop 新特性:Linux Workspaces  

使用 Docker Desktop 时,运行守护进程的 VM 是完全不透明的:您可以在 Windows 中与 Docker 和 Kubernetes API 交互,但是除了 Docker 容器或 Kubernetes pod 之外,不能在 VM 中运行任何东西。

使用 WSL 2 集成,仍然可以体验到与 Windows 的无缝集成,不过运行在 WSL 内部的 Linux 程序也可以做到这一点。这对于开发针对 Linux 环境的项目的开发者或者针对 Linux 定制的构建过程具有巨大的影响,他们不再需要同时维护 Linux 和 Windows 两套不同的构建脚本了。

例如,Docker 开发人员可以在 Windows 上使用 Linux Docker 守护程序,可以使用与 Linux 开发人员相同的工具和脚本集:

使用 Docker Desktop technical preview、WSL 2 和 VS Code remote 开发 Docker 守护进程


此外,WSL 的绑定挂载将支持 inotify 事件,并且具有与本地 Linux 机器几乎相同的 I/O 性能,通过 I/O-heavy toolchains 解决了 Docker Desktop 的痛点问题之一。Node.js、PHP 和其它 Web 开发工具也可以从这一特性中获益。

结合 Visual Studio Code “Remote to WSL”,Docker Desktop Linux workspaces 可以在 Windows 上的 IDE 运行完整的 Linux 工具链,以便在本地机器上构建容器。

性能  

针对 WSL 2,微软在性能和资源分配方面投入了大量的精力:VM 设置使用动态内存分配,并且可以在所有主机 CPU 上安排工作,在主机提供的内存范围内消耗所需内存,并与运行在主机上的 Win 32 进程协作。

Docker Desktop 利用这一点极大地提高了资源消耗,可以根据需要任意使用 CPU 或内存,并且一些 CPU/ 内存密集型的任务,运行速度要比之前快。

此外,冷启动之后,启动 WSL 2 发行版和 Docker 守护进程的时间也快得惊人,在我们的开发笔记本电脑上仅需 2 秒钟,而在当前版本的 Docker Desktop 上仅需 10 秒钟。如果我们将守护进程的启动推迟到第一次 API 调用,并在守护进程没有运行任何容器时自动停止它,就可以达到优化电池寿命的目的。

零配置绑定安装支持  

针对 Docker Desktop(尤其是在企业环境中),用户通常都会考虑这样一个问题,即 Windows 文件绑定挂载的可靠性。如果当前实现依赖于 Samba Windows 服务,那么它可能会被停用、被企业 GPOs 阻塞、被第三方防火墙阻塞等。

而使用 WSL 2 的 Docker Desktop 可以解决这个问题,通过 WSL 特性来实现 Windows 文件的绑定挂载,提供开箱即用的“IT Just Works”体验。

Docker Desktop for WSL 2 将于 7 月开放预览

通过和微软的合作,我们编写了核心功能来部署集成包、运行守护进程并将其公开给 Windows 进程,支持绑定挂载和端口转发。

Docker Desktop for WSL 2 预览版将于 7 月开放下载,它将与 Docker Desktop 当前版本并行运行,用户仍可处理现有项目。

原文链接

https://engineering.docker.com/2019/06/docker-hearts-wsl-2/


活动推荐

QCon 全球软件开发大会(北京站)2019 已经圆满结束,QCon 上海 2019 即将起航,点击 「 阅读原文 」了解详情。大会 7 折早鸟票限时开售,现在报名立减 2640 元,团购可享更多优惠!有任何问题欢迎联系票务小姐姐 Ring ,电话:13269076283 微信:qcon-0410

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34869
 
45 次点击  
分享到微博