LinuxKit NanoServer和DevOps是个啥关系?

又是一年DockerCon,从14年开始关注Docker,每年的DockerCon都能带来不少惊(hao)喜(wan)的东西,今年的新玩具应该就算是LinuxKit和Moby了。

今天快快的把玩了一下,从yml文件直接打包出一个全新的linux服务器镜像的过程非常简单让人不禁想起了乐高积木,这次在DockerCon上乐高玩具也被多次推到前台,甚至演讲的背景音乐都好像进了街机厅一样。像搭积木一样搭建软件系统,这是多少程序员的梦想,也好像我们从开始写代码的那一刻就觉得这才应该是软件最终的形态…… 而且这事儿看上去也好像没有那么复杂,但当你写了几年代码后才发现,这不过是个美好的故事。今年,我们似乎向这个目标又迈进了一步。

云时代的OS到底会长成什么样子,这个问题其实是多家云厂商都在找寻的方向。大多数的云厂商的做法是将大家常用的操作系统一股脑的放到自己的模版库中。但这里有一个不容忽视的问题:主机时代的操作系统是多用途的,而虚拟化/云计算时代的操作系统则是单一用途的。以前,我们会将多种应用尽量部署在同一台主机上以便节省资源(因为搭建服务器是一个辛苦活),这要求我们的操作系统足够通用化,包含的组件也是向着越来越丰富的方向发展;而虚拟化和云计算兴起以后,我们会尽量在一台主机上只部署单一应用(因为搭建服务变的无比简单),以提升应用部署速度,响应速度和敏捷程度。而原先那种通用化(臃肿)的操作系统就变的不那么合适了,更重要的是,由于那些与应用无关组件的存在,我们必须花费很多不必要的精力来维护这些组件,仅仅是为了能够让我们大楼的地基足够稳固 … … 有没有一种盖好了大楼再拆掉不需要的地基的做法?这其实就是LinuxKit/NanoServer想要解决的问题。

最近几年DevOps风生水起,IT界非常擅长创造各种新概念,而让很多人迷失了我们真正需要些什么。无论是敏捷,精益,DevOps还是持续交付其实我们都在解决同一个问题,那就是效率。

如何才能提高效率,其实基本的思路只有两个:1. 减小粒度,将复杂问题简单化,降低复杂度,减少为了那些过程复杂度所付出的管理成本。2. 解耦,给我们的系统,团队足够自由去按照自己的步调解决问题,减少他们之间的摩擦,让我们投入的资源尽量多的转换成生产力。

大家可能感觉这2个话题和LinuxKit/NanoServer没啥关系,而实际上关系很大。这次Docker的做法是一种降维打击的策略。简单来说,docker就是一种对技术栈进行编排的技术,当前对于对应用层的优化已经到达一定程度了,那么如何迈出下一步就是个大问题,而对操作系统开刀就是个自然的选择。LinuxKit通过一个yml文件对操作系统组件进行描述,允许用户根据自己的需求动态创建OS镜像,这种方式给予了用户从根本上控制应用系统技术栈的能力。底层的依赖减少了,问题自然少了,运行速度,出错几率和安全性都会得到优化。这其实将复杂问题简单化的一种方式。同时,因为依赖变少,和其他组件的耦合程度也降低。

我们再看一下NanoServer,这是微软在Server 2016中所提供的一个全新的操作系统发行版,它同样允许用户根据自己的需要选择所需要的组件,并动态生成一个专用的操作系统版本。下面这张图是Nano Server Image Builder中用来选择操作系统组件的配置界面:

Nano Server Image Builder中用来选择操作系统组件的配置界面

下面这个是一个linuxkit.yml文件,同样是用来对操作系统进行组装:

一个linuxkit.yml文件

是不是有种殊途同归的感觉,有了这样的工具,我们不仅仅可以为我们的应用定制操作系统,而且这个操作系统还会变的非常的小,启动也更加迅速,更加适合云时代的操作系统特点。像Win Server这样的系统都可以做到400M的体积和40秒的启动速度:

Win Server

使用linuxkit更加可以制作出60M左右的操作系统镜像

使用linuxkit更加可以制作出60M左右的操作系统镜像

这才是使用云时代的操作系统的正确姿势,这一次,微软和Docker又想到一起去了。其实我们永远要记住一点,我们要的不是操作系统,我们要的是上面的应用。盖好了大楼然后拆掉地基这种事情可能也只有在软件行业才能做到了。





作者:徐磊
来源:51CTO
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/187269

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。