Docker源码分析
上QQ阅读APP看书,第一时间看更新

第1章 Docker架构

1.1 引言

Docker是Linux平台上的一款轻量级虚拟化容器的管理引擎。在全球范围内,Docker还是一个开源项目,整个项目基于Go语言开发,代码托管于GitHub网站上,并遵从Apache 2.0协议。目前,Docker可以帮助用户在容器内部快速自动化部署应用,并利用Linux内核特性命名空间(namespaces)及控制组(cgroups)等为容器提供隔离的运行环境。Docker借助操作系统层的虚拟化实现资源的隔离,因此Docker容器在运行时与虚拟机(VM)的运行有很大的区别,Docker容器与宿主机共享同一个操作系统,不会有额外的操作系统开销。这样的优势很明显,因而大大提高了资源利用率,并且提升了I/O等方面的性能。

众多新颖的特性以及项目本身的开放性,导致Docker在不到两年的时间里迅速获得了诸多厂商的青睐,其中更是包括Google、Microsoft、VMware等行业领航者。Google在2014年6月推出了Kubernetes,宣布支持Docker容器的调度管理,而2014年8月Microsoft则宣布Azure上支持Kubernetes,随后传统虚拟化巨头VMware宣布与Docker强强合作。2014年9月中旬,Docker更是获得4000万美元的C轮融资,以推动分布式应用的发展。

目前,Docker的前景被普遍看好。未来的云计算领域乃至整个IT领域,Docker都必将扮演不可或缺的角色。为了帮助大家更好地认识Docker、理解Docker并掌握Docker,本书从Docker源码的角度出发,详细介绍Docker的架构、Docker的运行以及Docker的特性。本章主要介绍Docker架构。

本书关于Docker的分析均基于Docker 1.2.0版本的源码。

本章目的是在理解Docker源码的基础上分析Docker架构,分析过程主要按照以下三个部分进行:

□ Docker的总架构图。

□ Docker架构内部各模块功能与实现的分析。

□ 通过具体的Docker命令,阐述Docker的运行流程。