这本书是一本关于Docker入门的书籍,感觉里面的内容不错,特意做下笔记。
书本中实验例子中的资源在作者的github上,资源链接点我
第一部分 Docker概况
第1章 容器发展之路
1.1 从物理机到容器
业务是运行在应用之上的,而应用一开始只能运行在物理服务器上。为了保障应用的平稳运行,我们采购的服务器通常性能都大于业务需求的性能。甚至我们通常在一个服务器上只运行一个应用,目的是应用之间不会相互影响。这无疑对服务器资源是个极大的浪费。
后来,出现了虚拟机,虚拟机把服务器的资源给虚拟化了,可以在一台服务器上安装部署多个虚拟机。每个虚拟机的环境完全独立,大大提高了服务器的资源利用率,最终为公司节约了大量的资金支出。
虚拟机很美好,但是有一个明显的缺点,就是依赖其OS。每个虚拟机都要安装一个OS,OS会占用额外的CPU、RAM和存储,此外OS还需要定期打补丁和监控,这些都需要资源。接下来就出现了容器技术,容器模型和虚拟机模型相似,其主要的区别在于,容器的运行不会独占操作系统。实际上,运行在相同宿主机上的容器是共享一个操作系统的,这样就能节约了大量的资源。虚拟机是虚拟化了硬件资源,而容器则是对系统做了虚拟化。这样带来的好处就是,资源利用率提高了,节省了资金成本。
此外,容器技术还具有快速启动、便于迁移的特点,可以轻松把容器从笔记本迁移到服务器上。这就解决了一个运行环境的痛点了,不会再有人说为什么在我的电脑上能正常运行的,在服务器上就出错了,肯定是环境不一样造成的纠纷。
说到容器技术,当然要提到其中的扛把子——Docker。容器技术不等于Docker,但是提到容器多数人都第一时间想到的是Docker。对容器发展影响比较大的技术包括内核命名空间(kernel Namespace)、控制组(Control Group)、联合文件系统(Union File System)以及Docker。事实上,容器化技术很早就出现了,历史甚至可以追溯到大型机的时代。
1.2 Docker 在Windows及Mac的现状
现代的容器技术源于Linux,所以我们学习容器技术(Docker)首选是在Linux平台上学习。在win10以前,Docker是没办法运行在windows内核上的。要在windows中使用Docker,实际上是在windows中安装虚拟机,然后在Linux虚拟机中运行Docker。在win10的情况不一样,现在Docker已经可以共享win10的内核了,也就是可以直接运行在win10上了。
迄今为止,还没有出现Mac容器。要在Mac上运行Docker,那就是使用Docker for mac 运行Linux容器。这是通过在mac上启动一个轻量级的Linux VM,然后在其上运行Linux Docker来实现的。
1.3 Kubernetes(K8S)
Kubernetes是谷歌的一个开源项目,并且开源之后迅速成为容器编排的领头羊。有一种很流行的说法:Kubernetes是保证容器部署和运行的软件体系中很重要的一部分。
目前K8s采用Docker作为其容器运行时(container runtime),包括k8s启动和停止容器,以及镜像的拉取等扽。但是,k8s也提供了一个可插拔的容器运行时接口CRI。CRI能够帮助k8s实现将运行时环境从Docker快速替换为其他容器运行时。在未来,k8s中的默认容器运行时可能由docker替换为containerd。
本书不会对k8s做详细的介绍,对于k8s,作者有一本叫做The Kubernetes Book
的书可以学习,目前只有英文版。
1.3 小结
在过去,每当业务部门想运行新的应用时,IT部门就需要采购新的服务器来满足需求。接下来VMWare的出现终结了这个时代,使得IT部门可以更高效地利用现有的和新的机器资源,产生更大的价值。但即使VMWare和虚拟机模型这么优秀的技术,也存在其缺点。在VMWare和Hypervisor成功后,出现了更加高效并且更加轻量级的虚拟化技术——容器。但容器技术在发展之初是很难应用于生产环境的,并且只在拥有Linux内核工程师的Web巨头的数据中心内才能看到实际应用。接下来Docker公司出现了,突然之间容器虚拟化技术开始被大众广泛使用。
说到Docker,接下来就请读者跟随本书一起,来了解Docker是什么,以及为什么要使用Docker吧!
网友评论