CSDN话题挑战赛第2期
参赛话题:万家争鸣的云计算修罗场
容器技术与Docker发展史
2015年微软也在Windows Server上为基于Windows的应用添加了容器支持,称之为Windows Containers〇它与Windows Server 2016 ー同发布〇通过该实现,Docker可以原生地在Windows上运 行Docker容器,而不需要启动ー个虚拟机来运行Docker ( Windows上早期运行Docker需要使用 Linux虚拟机)。同年,MacOS也原生支持运行Docker容器,至此Docker完成了三大平台的适配。
在 2017 年的 Dockercon 大会上,Docker 发布了 LinuxKit 和 Moby 项目,LinuxKit ( https://github. com/linuxkit/linuxkit )是为容器组装操作系统的工具包。Moby 项目(Moby )是ー 个在可交换的组件层面进行合作、从而允许第三方从ー个部件库和规划参考中自己生成基于容器的 系统〇
Linuxkit为每种容器提供了一个基于容器的方法,以生成客制化的轻量级Linux子系统,这就是 当年疯狂的Unikemels创意的具体实现,而且更加不可思议的是,这些Linux子系统一旦被打包成 ISO镜像,就可以用来启动物理机或者虚拟环境。Docker以提供服务的方式维护这些子系统。也就 是说,Linux也是Docker架构中的一个组件。实际上,在Docker for Win或者Docker for Mac这种非 Linux OS 场景下,Docker 启动了—叫 MobyLinuxVM 的虚拟机(Windows 和 MacOS 的 MobyLinuxVM又有不同)来跑Docker容器,为了能够让这个额外的VM层足够轻量级,内核裁剪和定制的工作就必不可少,这正是LinuxKit项目的来源。LinuxKit本身并不是一个精简的操作系统, 它是一个用来编译出可运行的精简操作系统镜像(包括kernel、disk.img、BlOS.iso等)的工具。
Moby项目的目的是建立一个部件级别的可以组装的系统,Moby提供了一个框架,使得容器提 供商和服务提供商可以更好地提供工具和最佳实践,创建基于容器的监控、编排、网络以及其他系 统。简单来说就是,如今的Docker再次进化,Docker不再作为ー个容器引擎出现,用户可以通过 LinuxKit定制容器引擎(Libcontainer )的底层操作系统,然后通过Moby把容器引擎和LinuxKit打 包生成一个自定义的"Docker”(现在Github上已经不存在Docker项目,而被指向Moby 了 )〇
Moby像是一个组装エ厂,Docker只是Moby组装的ー个结果。对于普通用户来说,依旧是该干 什么还干什么。对于架构师来说,终于可以轻松地构建自己的容器系统,不再高度依赖Docker 7〇
容器虚拟化技术几十年来不断发展与完善,相继加入了 pivot_root等很多技术,市场上也出现了 ー些商业化的容器技术,在这些公司与全球开发者的共同努力下,不断推进容器技术发展,最后核 心容器技术进入了 Linux的内核主线,再后来诸多大厂加入开发的Libcontainer,使得如今人人皆可 得心应手地操作容器。