“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

Docker Desktop for WSL 2 将于 7 月发布预览版本

  • 2019-06-19
  • 本文字数:2041 字

    阅读完需:约 7 分钟

Docker Desktop for WSL 2将于7月发布预览版本

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/


2019-06-19 09:4534144
用户头像

发布了 497 篇内容, 共 307.3 次阅读, 收获喜欢 1907 次。

关注

评论

发布
暂无评论
发现更多内容

在线图片水印平铺工具

入门小站

工具

vue入门:组件概述

小鲍侃java

8月日更

《社会心理学》-怎么说服他人(整理稿)

箭上有毒

8月日更

介绍一个好用的网络工具traceroute命令

liuzhen007

8月日更

如何写好一篇自媒体文案:把握节奏引起共鸣

石头IT视角

Rust从0到1-高级特性-不安全的Rust

rust unsafe 高级特性 不安全

模块5作业

Geek_35a345

前端之算法(六)分而治之

Augus

算法 8月日更

python--构造方法笔记

加里都好

你知道关闭页面时怎么向后台发送消息吗?

编程三昧

JavaScript 大前端 8月日更

网络攻防学习笔记 Day107

穿过生命散发芬芳

网络安全 8月日更

JavaScript 中 Array map() 方法

HoneyMoose

架构实战营 模块五 作业

一雄

作业 架构实战营 模块五

iOS开发:真机调试提示XXX, but code signing identity Apple Development问题

三掌柜

8月日更 8月

架构训练营模块5-作业

sophiahuxh

【Flutter 专题】65 图解基本 TextField 文本输入框 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

Java 操作 Office:POI word之网络图片处理

程序员架构进阶

Java Apache POI 实战问题 8月日更

Elasticsearch 日志监控方案

Se7en

分享 6 个实用的 Vue 技巧

devpoint

Vue Vue3 8月日更

也许你曾对怎么样才算认真做事情感到好奇,这本书给我三个启发,我想与你分享。

叶小鍵

JavaScript 中 Array map() 方法

HoneyMoose

架构实战营 - 模块五作业

Julian Chu

架构实战营

kafka - 基础介绍

旺仔大菜包

kafka

OLAP 简介

LeifChen

OLAP 多维分析 8月日更

从字节码探索代理模式

4ye

Java 后端 字节码 代理模式 8月日更

Linux之wget命令

入门小站

Linux

Lodash 是什么

HoneyMoose

前端基础一之HTML篇

ベ布小禅

8月日更

【设计模式】观察者模式

Andy阿辉

C# 编程 后端 设计模式 8月日更

ElastricSearch第三弹之存储原理(详细+易懂)

阿Q说代码

ES 8月日更 flush Refresh translog

Docker Desktop for WSL 2将于7月发布预览版本_服务革新_Simon Ferquel_InfoQ精选文章