水火交融-Windows上的Linux容器

星夢妙者
发布: 2025-09-06 09:14:02
原创
162人浏览过

在上周结束的微软技术暨生态大会上,盆盆分享了关于azure stack和容器的相关内容。其中,最引人注目的无疑是微软最新推出的一项技术——可以在windows中直接运行的linux容器!接下来,盆盆将通过这篇文章详细探讨这一技术。

水火交融-Windows上的Linux容器原本由于容器共享操作系统内核,Windows系统上无法运行Linux容器,反之亦然。现在,主流的docker编排工具大多支持Windows和Linux混合部署。例如,Kubernetes,如下图所示,Kubernetes集群中包含Windows节点。

水火交融-Windows上的Linux容器如果在Windows环境中运行Windows容器,可以看到多个运行在同一会话中的进程,这些进程共享同一个容器。下图显示的进程都在会话25中运行。

水火交融-Windows上的Linux容器Windows容器采用联合挂载文件系统,类似于Linux容器的AUFS等,使用分层的镜像层(Image Layer),最顶层的Layer可读可写,称为sandbox layer,存储在一个名为sandbox.vhdx的文件中。多层的Base Image和sandbox.vhdx在容器内部呈现为一个统一的、联合的文件系统。

而在Windows中运行Linux容器,则利用了Hyper-V容器的功能,每个容器都有自己的独立内核(使用docker的LinuxKit)。Hyper-V容器的安全性更高,因为它是在Hypervisor级别隔离的。

要在Windows 10中启用这一功能,最简单的方法是(确保已更新到Build 17205或更高版本)下载并安装最新的docker for Windows(请在网上搜索并选择下载edge分支)。

https://www.php.cn/link/86c26c7eb678214b9749fe1c5364cff2

然后确保选择“启用Windows上的Linux容器”。按照屏幕提示完成必要的步骤即可。

水火交融-Windows上的Linux容器当运行以下命令时,即可在Windows 10中创建Linux容器:

前面提到,这里的Linux容器实际上是Hyper-V容器,它启动了一个最小化的Linux虚拟机,其内核和引导文件位于C:\Program Files\Linux Containers目录下,包含bootx64.efi和initrd两个文件。

然后从本地镜像缓存中尝试获取ubuntu镜像(如果没有,则从docker hub中pull下来),并自动创建Linux容器,类似于Windows容器,其顶层的可读可写镜像层也称为sandbox.vhdx。

在Bash命令行提示符下输入cat /etc/issue,可以看到Linux容器的操作系统版本号为Ubuntu 16.04.3 LTS。

使用Process Explorer查看时,这个Hyper-V容器在宿主机上的进程为vmwp.exe,这是Hyper-V虚拟机的进程。容器内的进程都在这个最小化的Hyper-V虚拟机中运行,宿主机上看不到这些Ubuntu容器内的进程。

AI社交封面生成器
AI社交封面生成器

一句话/一张图一键智能生成社交媒体图片的AI设计神器

AI社交封面生成器30
查看详情 AI社交封面生成器

查看vmwp进程的打开句柄,可以看到类似以下复杂路径,如下图所示:

\device\STORVSP\GUID\{guid}\C:\programdata\Docker\lcow\lcow\aaa5f623879acf5818bffbeca7d88b62d4f262e957d2c4de99591c3b04144df1\sandbox.vhdx"

水火交融-Windows上的Linux容器其中,sandbox.vhdx(图中底部的红色方框)是Ubuntu容器的顶层可读可写镜像层,所有修改的内容都会保存在这个层中(通过commit可以固化下来),以实现代码的快速迭代。从图中可以看出,该sandbox.vhdx是通过Hyper-V虚拟机的VMBus上的SMB共享来访问的!

绿色方框部分是Ubuntu镜像的多个Base Image层,这些Base Image由不同的layer.vhd文件组成。这些Base Image和顶层的sandbox.vhdx通过联合挂载文件系统,在容器内部表现为一个单一的完整文件系统。

进入sandbox.vhdx的父目录,也就是以下路径:

C:\programdata\Docker\lcow\lcow\aaa5f623879acf5818bffbeca7d88b62d4f262e957d2c4de99591c3b04144df1\

其中的aaa5f623879acf5818bffbeca7d88b62d4f262e957d2c4de99591c3b04144df1就是该Ubuntu容器的容器ID。

该父目录下有一个layerchain.json文件,其内容如下:

该layerchain.json文件显示的是sandbox.vhdx文件所依赖的容器Base Image的路径,总共有5个文件,与前面截图中的绿色方框的5个文件相对应。

这就是Windows的强大之处,未来可以想象,底层的容器集群可以全部采用Windows Server 2016系统,既能运行Windows容器,也能运行Linux容器,并且支持docker的商业版,从操作系统到docker,都有商业化的保障!

以上就是水火交融-Windows上的Linux容器的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号