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
目录
相关文章
|
2天前
|
机器学习/深度学习 人工智能 运维
AIOps与DevOps的区别在哪里
【2月更文挑战第29天】DevOps强调开发和运维的协作,而AIOps则侧重AI对运维的增强。两者在参与人员、工作方式和内容上有区别。随着DevOps的普及,软件开发、人工智能与运维的交叉工作增多,预示着向AIOps的过渡。
|
安全 Devops 测试技术
DevOps理念的技术本质揭秘(6)
DevOps 是开发 (Dev) 和运营 (Ops) 的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。 DevOps 对团队意味着什么? DevOps 使以前孤立的角色(开发、IT 运营、质量工程和安全)可以协调和协作,以生产更好、更可靠的产品。通过采用 DevOps 文化、做法和工具,团队能够更好地响应客户需求,增强对所构建应用程序的信心,更快地实现业务目标。
DevOps理念的技术本质揭秘(6)
|
敏捷开发 Devops 项目管理
DevOps理念的技术本质揭秘(3)
敏捷是一种项目管理和软件开发的方法,它以完成项目的增量和迭代步骤为中心。敏捷开发的中心是可以鼓励快速交付的短期项目。敏捷团队的合并被认为是组织采用DevOps实践的先驱。
DevOps理念的技术本质揭秘(3)
|
运维 Devops 微服务
DevOps理念的技术本质揭秘(1)
DevOps从本质来讲只是倡导开发运维一体化的理念(MindSet)。这个理念的提出是为了解决很多企业面临的转型挑战,也就是将业务数字化,并且缩短数字化业务上线的周期,快速试错,快速占领市场。 DevOps并没有改变固有的软件生命周期:需求,设计,开发,测试,交付。但伴随着基础设施,软件设计方法等的改变,软件开发的思路,或者方式产生了比较大的变化。
DevOps理念的技术本质揭秘(1)
|
Kubernetes 监控 Devops
DevOps理念的技术本质揭秘(8)
DevOps有几个核心原则在发挥作用。主要细分如下: 系统思维:系统思维意味着思考整个系统的性能,而不是特定团队的性能。这种心态确保所有团队和员工都对生产优质产品负责,并阻止团队将缺陷传递到下游。 文化:成功的DevOps文化通常与改进协作、实验和持续学习的精神联系在一起。这可能意味着团队确保分配时间来改进工作,团队因承担风险而获得奖励,成员能够从团队内外的其他人那里学习。 自动化:DevOps非常重视尽可能实现自动化。这可以减少在重复和耗时的任务上花费的时间,并提高部署速度。例如,DevOps团队可以自动化测试过程,以便开发人员能够尽早、频繁地收到反馈
DevOps理念的技术本质揭秘(8)
|
运维 Kubernetes Devops
DevOps理念的技术本质揭秘(4)
微服务只是一种设计思路,或者说他给出了如何用正确的方法来进行SOA的实施。理论上来讲他的确和DevOps没什么关系,但是从如何实践DevOps的角度来讲,微服务是非常有意义的。此外,随着诸如Spring Cloud以及微软Fabric等SDK的完善,微服务开发模式也逐步完善,实现了概念的落地。
|
Devops
DevOps理念的技术本质揭秘(7)
采用 DevOps 做法可以通过技术来实现流程的自动化和优化,但这一切都需要从组织内部的文化和参与的人员开始。培养 DevOps 文化的挑战在于需要深入改变人们的工作和协作方式。
DevOps理念的技术本质揭秘(7)
|
Prometheus 监控 Cloud Native
DevOps理念的技术本质揭秘(9)
DevOps 是指组织的开发 (dev) 和运营 (ops) 团队的集成。它涵盖了组织的文化、流程和理念。DevOps 工具有助于促进 DevOps 的核心原则,包括沟通、统一和效率。当与该方法结合使用时,DevOps 工具可实现更快的开发周期和更高的软件质量。本文想要和大家一起来探讨可用于优化 DevOps 生命周期的所有七个阶段的 11 种工具。
161 0
DevOps理念的技术本质揭秘(9)
|
运维 监控 Devops
DevOps理念的技术本质揭秘(10)
DevOps(Development+Operations)强调共同对业务目标负责,以实现用户价值作为唯一的评判标准:保证产品功能及时实现、成功部署和稳定使用。 1、是一种重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例,改善团队之间的协作关系 2、是一组过程、方法与系统的统称,包含开发、测试和运维 3、用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合 4、透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,按时交付软件产品和服务
183 0
DevOps理念的技术本质揭秘(10)
|
监控 Devops 持续交付
DevOps理念的技术本质揭秘(2)
DevOps是一种强调快速、增量和持续交付产品的工作方法。DevOps一词结合了“开发”和“运营”两个词。实际上,它是开发团队和运营团队之间的联盟。DevOps通常被认为是一个过程、一种文化或一套原则,使组织能够快速、持续地交付产品。
DevOps理念的技术本质揭秘(2)