Docker应用容器引擎技术详解:Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。正当他们快要坚持不下去的时候,脑子里蹦出了“开源”的想法。

什么是“开源”?开源,就是开放源代码。也就是将原来内部保密的程序源代码开放给所有人,然后让大家一起参与进来,贡献代码和意见。那到底什么是docker?

Docker应用容器引擎技术详解

虚拟机与虚拟化技术

先来讲讲虚拟化技术实现的虚拟机,虚拟机类似于“子电脑”。在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。

虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。

虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。

而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。

容器和虚拟机的对比,正因为如此,容器技术受到了热烈的欢迎和追捧,发展迅速。需要注意的是Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。

虚拟机与容器对比

Docker及其关键技术

Docker所应用的几个关键技术都不是docker发明的,而是linux早就成熟的技术,docker将这几个技术整合,形成了革命性的成果。

Namespace

Namespace负责运行环境的隔离,即每个容器都是一个独立进程,通过namespace技术进行隔离,每个容器互相不可见,包括进程隔离、网络隔离、文件隔离;

Cgroup

Cgroup是负责运行资源的隔离或者说独占,可以为每个容器指定资源数量,互相不侵占;

Union filesystem

Union filesystem是解决应用运行的小型化统一标准,容器镜像提供了容器运行的基础,但容器镜像并不等于容器。

K8S

就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。就在这个时候,K8S出现了。K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

所以在云计算行业容器技术包括docker的容器引擎技术和K8S为主的容器编排技术。Kubernetes这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。和Docker不同,K8S的创造者,是众人皆知的行业巨头——Google。

然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。K8S是2014年6月由Google公司正式公布出来并宣布开源的。