Docker容器&Kubernetes:发展历史

发布于 2020-03-29 · 本文总共 2584 字 · 阅读大约需要 8 分钟

容器起源

1979年

Unix-Chroot的系统调用产生

为了解决软件构建和测试效率问题,在Unix系统中隔离出一个可供软件进行构建和测试的环境(chroot 的作用是“重定向进程及其子进程的根目录到一个文件系统上的新位置”)

2000年

FreeBSD-Jails隔离环境发布

FreeBSD隔离出了独立进程环境和用户体系、为Jails环境分配独立IP、真正实现了进程的沙箱化。

2006年

Google推出Process Container(2007年改名Cgroup)

Cgroups技术的出现和成熟,标志在 Linux 阵营中“容器”的概念开始被重新审视和实现。 更重要的是,这一次“容器”这个概念的倡导者变成了Google: 一个正在大规模使用容器技术定义世界级基础设施的开拓者。

2008年

完整的容器技术LXC(LXC是Linux Container的简写)诞生

LXC将Cgroups的资源管理能力和Linux Namespace的视图隔离能力组合在一起形成Linux Container。 注意,Docker并不是LXC的替代品,Docker底层使用了LXC来实现,LXC将Linux进程沙箱化,使得进程之间相互隔离, 并且能够控制各进程的资源分配;

2013年

Docker公司将Docker引擎技术开源

2010年专注于容器技术的PaaS公司–DotCloud成立, DotCLoud公司基于LXC(Linux Container)技术进行了封装和标准化, 并用Google的Go语言写成了一个容器引擎–Docker。

因此2013年3月 Docker之父–Solomon Hykes宣布Docker将开源。 因为具备“Build,Ship,and Run”和“Build once,Run AnyWhere”的能力(也是Docker的两句口号), 这个容器管理引擎大大降低了容器技术的使用门槛,轻量级,可移植,虚拟化,语言无关, 写了程序扔上去做成镜像可以随处部署和运行,开发、测试和生产环境彻底统一了,还能进行资源管控和虚拟化。 所以Docker不鸣则已、一鸣惊人,开源后立即变得非常火爆。 2013年10月,DotCloud公司干脆将自己的名字改为Docker Inc.

Docker的核心优势:

1.容器镜像:Docker项目通过容器镜像,直接将一个应用运行所需的完整环境,即:整个操作系统的文件系统也打包了进去。

2.Docker镜像的分层:Docker项目为了更好的共享资源,还在容器镜像的制作上引入了“层”的概念,这种基于“层”(也就是“commit”) 进行 build,push,update 的思路。新镜像不需要全新构建,而是可以找一个包含Rootfs文件系统的Base Image镜像,然后一层一层叠加,每安装一个软件,就在现有镜像的基础上增加一层,而且镜像的每一层都可以被共享。而且,因为容器的“Copy-on-Write”特性,当多个容器共用一份Base Image基础镜像时,某个容器修改了Base Image镜像的内容,该修改只会被限制在单容器内,不会影响共用该Base Image的其他容器。Docker容器作为Docker运行态(Docker镜像是静态),也是基于分层的概念,在Docker容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”(镜像层是只读)。

Kubernetes和容器调度平台

CloudFoundry、Mesos和Docker Swarm

2009年,CloudFoundry

VMware-Cloud Foundry诞生并第一次对PaaS 的概念完成了清晰而完整的定义

Cloud Foundry是最早发布的容器编排调度工具

2009年, Mesos

MesoSphere公司发布Mesos调度框架

Mesos定位为数据中心分布式操作系统(DC-OS)内核—-它可以将不同的机器整合在一个逻辑计算机上面,像用一台电脑一样使用整个数据中心。

Mesos是以与Linux内核同样的原则而创建的,不同点仅仅是在于抽象的层面。Mesos内核运行在每一个机器上,同时通过API为各种应用提供跨数据中心和云的资源(CPU、内存)管理调度能力。这些应用包括Hadoop、Spark、Kafka、Elastic Search。 还可配合框架 Marathon 来管理大规模的Docker等容器化应用。 Mesos是优秀的老牌调度框架,也是Twitter、Airbnb、Netflix是其典型用户。

2019年5月,Mesos社区“代言人”Twitter宣布从Mesos转向K8S。 随着K8S成为事实标准以及老牌调度框架Mesos与云原生渐行渐远,Twitter宣布从Mesos转向K8S,计划2020年底完成迁移,Twitter全面转向“K8S Native”;

Twitter在发布会上公布的选择K8S Native的评估依据,也比较好的总结了K8S相对Mesos的优势:

1) 良好的开源技术与开源生态;

2) 全世界所有的公有云都提供Kubernetes服务,不必担心厂商锁定;

3) 原生具备有状态业务(Stateful Application)的管理语义;

4) 项目本身快速迭代,具有很强创新能力和先进性;

5) 具备标准的存储对接接口,帮助Twitter无缝迁移各种现有存储服务。

Kubernetes

定义

Google开源的、以API为中心的、面向应用的容器编排调度平台;

K8S试图解决的问题是:如何让用户在管理应用的时候能最大程度的发挥容器和云的价值; K8S+容器是理想的微服务应用、分布式应用的构建和运行平台;

历史

2014年,Google推出Kubernetes(K8S)

2015年捐赠给CNCF,2015年7月发布第一个版本

Kubernetes是Google基于内部超大规模容器管理平台Borg推出的容器编排系统,目前是容器编排的事实标准。 Kubernetes的名字源于希腊语,是舵手、领航员的意思,Kubernetes在谷歌内部的开发代号是“Seven”即星际迷航中友好的Borg(博格人)角色。 Kubernetes的舵轮标志有7个轮辐就是对该代号的致意。 K8S–硅谷工程师习惯用首字母+省略的字母数 来作为简写,K后面省略8个字母再加上尾字母S就变成了“K8S”

refs

《云计算架构–技术实践》顾炯炯




本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:邱文奇(qiuwenqi)的博客;
内容系本人学习、研究和总结,如有雷同,实属荣幸!
阅读次数:

文章评论

comments powered by Disqus


章节列表