容器技术发展史

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器技术发展史

夫以铜为镜,可以正衣冠;以史为镜,可以知兴替;以人为镜,可以明得失。


我们学习一门新技术是需要时间成本的,我们希望学会以后能用它很久,但有些技术还没等学会,它就死了。还记得在大学的时候,选修里有Flash这门课程,可以做动画片,还能在网页中使用,于是课上课下花了不少时间去学,后来有一天,听说Chrome将不再支持Flash,这让Flash元气大伤,而我除了用Flash给当时的女友做了一个动画外,后来就再也没有用过。现在看来有这时间我去学点别的不好吗?所以啊,还是不能看什么火,看什么热就学什么,毕竟人的时间精力都极度有限,我们学一门技术前应该看看它的发展史,分析下它是干啥的,以后用不用的到?会不会很快被替代?

就算最后我们选错了,我们也思考过了,总比盲目选择要好的多。下面我们就以讲故事的形式来谈谈容器的发展,希望能激发思考,提升学习兴趣。

话说那是某年前的一天,云计算也是刚刚兴起,各大公司、开源社区都在忙着搞 PaaS(Platform as a Service),其中有一个名叫dotCloud的小公司,也置身于这场热潮之中,没有人关注这家默默无闻的小公司,这个公司内部有一个内部项目,用着还不错,于是dotCloud公司说就开源一下让大家用吧,能不能火的谁知道呢,开就完了。果然啊,就有很多人看了这个项目,说这货新瓶装旧酒,底层就是用了存在已久的Namespace和Cgroup技术来做资源隔离和限制,没啥新东西,大家不要在意它!但是几个月后呢,这个项目迅速火了起来,这就是后来大名鼎鼎的Docker,妥妥的diao丝逆袭有没有。

其实Docker的火热不是偶然的,它所使用的Namespace和Cgroup确实不是新技术,但是Docker确拥有一项杀手级的功能,这就是容器镜像,这个功能影响有多大呢?这么说吧,传统的应用上线过程是:开发写代码,运维上测试环境,然后上生产环境,但是有很多时候本地开发环境、测试环境及生产环境都有一些区别,比如软件的版本之类的,这有很多时候会导致程序运行问题,Docker镜像可以理解成一个压缩包,这个包里有完整的操作系统文件和执行程序,用户应用程序依赖包内的这些文件运行即可,不需要依赖宿主机的操作系统,这样一来,就实现了各种环境的统一,再也不用担心环境不一样导致应用起动不了啦!

当然了,发明了容器镜像功能只是Docker火爆的一个原因,对于一个开源项目,想要发展的好是多方面的,比如历史契机(Paas已经深入人心)、活跃的社区(Docker的一个主要定位就是给开发者提供优秀的开发者工具,开发者至高无上!)现在大家都已经知道Docker了,但是确不一定知道dotCloud公司,所以dotCloud干脆把公司名称改为Docker,这样知名度也就上去了。

这时Docker的社区已经非常繁荣了,有很多公司开始给Docker贡献代码,比如RedHat、CoreOS等,这些公司当然也有自己的考量,他们想基于Docker做平台化,简单的说就是搞个大平台,来管理Docker容器,于是CoreOS发布了Fleet容器调度工具,RedHat则有OpenShift,但是Docker现在风光无两啊,你觉的他会甘愿做个小角色?当然不会,它紧接着推出了自己的容器管理平台Swarm,随后又有很多当年耳熟能详的容器管理工具出现,比如说Marathon,一时间真的是百花齐放,大公司都在研究哪个更好,开始给自己看好的项目贡献代码,为后续应用于自己的生产环境做准备,小公司们则在静待吃瓜。

对于Docker开源社区的发展问题上,Docker公司有点一言堂的味道了,Google、Microsoft、RedHat这些大哥们有点说不上话了,对于如此火爆的技术,大哥们要是不能一起玩,你说大哥们能乐意吗?同样,一言堂的作风很容易让人做出差强人意的决策,Google曾想和Docker公司合作推进一个中立的容器运行时(container runtime)库作为 Docker 项目的核心依赖,但是Docker不同意啊,Docker说你们都听我的就行,我来搞个Libcontainer作为运行时库,但是Docker公司当时是突然火爆的一家公司,对于管理、技术上都没有太多积累,所以在战略和技术管理方面都出现了一些问题和分歧,代码的质量也出现了问题。

Google、Microsoft、RedHat等公司一看,就对Docker说了,老弟啊,你这么玩可不行,早晚让你玩坏了,这样吧,咱们搞个中立的基金会,你把Libcontainer捐献出来,你还牵头,我们一起搞,让它发展的更好,顺便改个名字叫RunC吧,根据RunC咱们一起定制一套容器相关的规范,也就是后来的 OCI( Open Container Initiative ),这套规范就把容器运行时和镜像实现从Docker项目中直接抽出来了,这代表着其它的容器管理平台,不需要依赖Docker了,你自己搞个容器,只要按着OCI标准来搞就行了。这就是想把Docker的权力分一分,但是Docker在容器领域就已经很好了,有繁荣的社区,所以这没有从根本上撼动Docker的地位。

Google一看这家伙,小老D还挺能撑啊,我得给你来点更厉害的,给你来个降维打击。Google有个比较传统的做法,内部系统用的时间长了,觉的该升级换代了,就把当前系统的论文发出来,你比如说hadoop大数据那套,最初的灵感就来自Google发表的论文,这时候Google内部有个系统,也是基于容器编排的,叫borg,在内部已经运行了很多年了,但是对外部来讲还很超前(这里给Google的技术点赞)

,然后Google又说了,咱们一起再成立个基金会: 云原生基金会(CNCF),咱们第一个项目就搞个k8s吧,在borg的基础上来搞,就这样有Google做背书,k8s项目在Github上小星星一路涨,眼看就把Docker自己的Swarm超越了。

CNCF社区一看,好苗头啊,同志们加把劲,我们需要让CNCF社区更繁荣,就还围绕着k8s来,然后CNCF就开始孵化一个个的云原生项目,比如Prometheus等,Docker眼看不敌,做了一个大胆的决定,把Swarm集成到Docker中来,但这无疑会增加Docker的体量和复杂性,这无疑也是一个风险极大的做法,但是最后,大家都知道k8s如今已经成为容器编排的基本事实。

最后,Docker把容器运行时Containerd捐献给了CNCF,自已则专注去做商业化业务,可以说在这场大战中Docker还是战败了,不过也不必担心Docker的未来,它未来可以做一些容器解决方案,技术咨询等业务,相信也会非常不错,看吧,只要你够强,就能和巨头掰掰手腕,不管结局如何,精彩的历史已经书写。

你还知道哪些细节,或者相关小故事,可以和大家一起分享。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
127 5
|
1月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
1月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
9月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
5月前
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
6月前
|
存储 虚拟化 Docker
|
6月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
9月前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
278 5
|
10月前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
254 14
|
10月前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
156 10