Linux容器云实战——Docker与Kubernetes集群完整版ppt全套课件整本书电子教案.pptx
《Linux容器云实战——Docker与Kubernetes集群完整版ppt全套课件整本书电子教案.pptx》由会员分享,可在线阅读,更多相关《Linux容器云实战——Docker与Kubernetes集群完整版ppt全套课件整本书电子教案.pptx(715页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 容器世界了解虚拟化Docker容器容器生态系统 了解虚拟化点击查看本小节知识架构点击查看本小节知识架构1.11.1Docker容器 1.21.2点击查看本小节知识架构容器生态系统1.31.3学习目标了解熟悉掌握熟悉了解虚拟化技术1 1掌握Docker的概念4 42 2熟悉容器的概念3 3熟悉容器生态系统提到容器,人们可能会想到水杯之类盛放液体的工具,在互联网中容器也是一种“盛放”东西的工具,容器技术与虚拟化技术类似。容器技术的便捷与高效使它成为当下十分流行的IT技术。容器技术中最具代表性的就是Docker技术,Docker几乎成为了容器技术的代名词。本章内容将带领读者打开容器世界的大门
2、,初探容器技术的奥秘。1.1 了解虚拟化了解虚拟化1.1.1虚拟化概念返回目录1.1.2硬件虚拟化 1.1.1 虚拟化概念在计算机技术中,虚拟化(Virtualization)是一种资源管理技术。虚拟化的目的是在一台计算机上运行多个系统或应用,从而提高资源的利用率,节约成本。将单台服务器中的各种资源,如网络、存储、CPU及内存等,整合转换为一台或多台虚拟机,用户就可以从多个方面充分利用计算资源,如图所示。由图可以看出,一台物理机可以拥有多台虚拟机,而这些虚拟机都是基于物理机运行。其中,物理机又叫作虚拟机的宿主机(可简称为主机),只要它处于正常运行状态,就可以一直承载虚拟机的运行。由于虚拟机基于
3、物理机运行,硬件设备都是共享的,在创建多台虚拟机时,也要考虑到物理机的配置是否能够承载足够数量的虚拟机。1.1.2 硬件虚拟化硬件虚拟化是对宿主机的硬件进行虚拟化,使硬件对用户隐藏,并将虚拟化的硬件呈现在用户面前,如图所示。图中所示的硬件并非真实的物理硬件,而是通过虚拟化技术虚拟出来的,与虚拟机一样基于物理机硬件。在1.1.1节中讲过,虚拟机的运行需要考虑物理机硬件的配置,例如,将物理机中的网卡取出后,在虚拟机设置中是无法添加网卡的,但只要物理机中有网卡,虚拟机中就可以添加多个网卡。再例如,物理机的内存有16GB,用户直接给虚拟机配置16GB,这也是无法实现的,因为物理机的运行也需要消耗内存。
4、1.1.2 硬件虚拟化下面是一些关于硬件虚拟化的例子。Inter-VT(Inter Virtualization Technology,Intel公司的虚拟化技术),为了解决纯软件虚拟化安全、性能等方面不足,这种技术可以让一个CPU看起来像是多个CPU在工作一样,从而实现了在一台计算机上同时存在多个操作系统。AMD-V(AMD Virtualization,AMD公司的虚拟化技术)。它是针对x86处理器系统架构的一组硬件扩展虚拟化技术,可以简化纯软件的虚拟化解决方案,改进VMM(Virtual Machine Manager,虚拟机监视程序)的设计,更充分地利用硬件资源,提高了服务器和数据中心
5、的虚拟化效率。1.2 Docker容器容器1.2.1Docker技术诞生返回目录1.2.2容器与虚拟化 1.2.3Docker优势 1.2.1 Docker技术诞生容器(Container)技术是基于虚拟化技术的,它使应用程序可以从一个计算环境快速可靠地转移到另一个计算环境,可以说是一种新型的虚拟化技术。由于容器技术的优越性,越来越多的互联网公司开始开发容器应用。早在1979年,UNIX系统中出现了一种chroot机制,这是容器技术的雏形。2000年,FreeBSD Jails技术出现,它基于FreeBSD系统,将计算机分为多个独立的小型计算系统。2006年,谷歌推出了Process Cont
6、ainers(过程容器)技术,它不仅可以隔离进程,还可以对隔离空间限制计算资源。2008年,出现了第一个完整的容器管理工具LXC(Linux Container,Linux容器)。2013年,LMCTFY(Let Me Contain That For you,我为你的程序打包)作为由谷歌开发的开源容器技术,实现了在Linux系统中使用容器技术,LMCTFY最终成为Libcontainer容器管理的重要组成部分。1.2.1 Docker技术诞生Docker技术问世,容器热度呈爆发式增长,Docker逐渐成为了容器中的杰出代表,如图所示。1.2.1 Docker技术诞生Docker是一个开源的容
7、器引擎,它可以使开发者打包好的应用程序在Docker空间中运行起来。当一台物理机中运行多个Docker容器时,就算其中一个容器出故障,也不会影响到整个业务。Docker的技术之所以独特,是因为它专注于开发人员和系统操作员的需求,将应用程序依赖项与基础架构分开。目前,容器无处不在,在Linux、Windows、数据中心、公有云中,都可以看到容器的影子,如图所示。1.2.2 Docker技术诞生引入集装箱的概念来辅助理解Docker容器。集装箱被誉为是运输业与世界贸易最重要的发明。早期的货物运输时,设计将不同的货物放在运输机上和因货物规格的不同而频繁的进行货物装载与卸载等浪费了大量的人力物力。为此
8、人们发明了集装箱,根据货物的形状、大小,使用不同规格集装箱进行装载,然后再放在运输机上运输。集装箱密封,只有货物到达目的地才需要拆封,在运输过程能够在不同的运输机上平滑过渡,避免了资源的浪费。Docker容器就是利用了集装箱的思想,为应用程序提供基于容器的标准化运输系统。Docker可以将任何应用及其依赖包打包成一个轻量级、可移植、自包含的容器。容器几乎可以运行在所有操作系统上。因此才有了那句话“Build Once,Run Anywhere(生成一次,到处运行)”,Docker的思想从其Logo中也不难看出一堆可移动的集装箱,如图所示。1.2.2 容器化与虚拟化传统的虚拟机技术是模拟出一套硬
9、件,在其上运行一套完整的操作系统,拥有自己独立的内核。虚拟机包含应用程序,必需的库或二进制文件,以及一个完整的Guest操作系统。而容器没有进行硬件虚拟,容器包含应用程序和它所有的依赖,容器中的应用进程直接运行在宿主机的内核上,与宿主机共享内核,因此容器要比传统的虚拟机更加轻便。容器技术与虚拟化技术都对需要运行的东西进行隔离,形成一个独立的运行空间,与宿主机系统互不干扰。虚拟化技术是基于系统的隔离,它对物理层面的资源进行隔离,如图所示。1.2.2 容器化与虚拟化而容器技术与之不同,容器的隔离空间中运行的是应用程序,隔离是基于程序的,不需要将系统隔离,如图所示。相较于虚拟化技术,容器是更加快捷方
10、便的技术,它的部署与迁移都十分快速,结构更加精简,运行速率更高。而虚拟化技术需要系统隔离,结构臃肿,无论是部署还是迁移都要消耗大量时间,每次创建都要新建系统,为用户的操作带来不便。不仅如此,虚拟化与容器还有着性能上的区别,如表所示。1.2.2 容器化与虚拟化Docker容器的操作系统是共享的,虚拟化的操作系统是独立的,所以后者的隔离性更强,但也注定结构复杂,无法被广泛应用到企业中。如今,容器技术已进入成熟阶段,为开发人员与运维人员提供了更大的灵活性。容器可以快速部署,提供不变的基础架构。它们还取代了传统的修补过程,使组织可以更快地响应问题,并使应用程序更易于维护。容器化之后,应用程序可以部署在
11、任何基础架构上,如虚拟机上、服务器以及运行不同虚拟机管理程序的各种公共云。许多企业从在虚拟化基础架构上运行容器开始,发现无须更改代码即可更轻松地将其迁移到云。容器本身具有固有的安全性。Docker容器在应用程序之间以及应用程序与主机之间创建隔离层,并通过限制对主机的访问来减少主机对外暴露的面积,从而保护主机与主机上的其他容器。在服务器上运行的Docker容器具有与在虚拟机上运行时相同的高级限制,来保证业务的安全性。Docker容器还可以通过保护虚拟机本身并为主机提供深度防御来与虚拟化技术完美结合。目前,大多数企业都有成熟的虚拟化环境,包括备份、监视、自动化的工具以及与之相关的人员和流程。1.2
12、.3 Docker优势目前,Docker发展趋势十分乐观,在企业中得到了广泛应用。接下来,将对Docker的优势进行详细介绍。1.编排有序在以往的项目交付过程中,常常出现在开发人员这里能够正常运行,到了运维人员那里却无法正常运行的情况,使业务不能在第一时间完成上线,导致交付过程效率低下。Docker提供了一种全新的发布机制。这种发布机制使用Docker镜像作为统一的软件制品载体,以Docker容器作为统一运行环境,通过Docker Hub提供镜像统一协作,最重要的是使用Dockerfile定义容器内部行为和容器关键属性来做支撑,从而使整个开发交付周期中软件环境保持统一,大大提高了产品交付效率。
13、Dockerfile处于整个机制的核心位置。因为在dockerfile中,不仅能够定义使用者要在容器中进行的操作,而且能够定义容器中的软件运行需要的配置,实现了软件开发和运维在配置文件上达成统一。运维人员能够使用Dockerfile在不同场合下部署出与开发环境一模一样的Docker容器。1.2.3 Docker优势2.高效易迁移Docker容器基于开放式标准,几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人计算机、服务器等。这种兼容性可以让用户轻松地把一个应用程序从一个平台直接迁移到另外一个平台。Docker是一款轻量级应用,在一台机器上运行的多个Docker容器可以共享这
14、台机器的操作系统内核,能够做到快速启动,只需占用很少的服务器资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能有效的降低磁盘用量,使用户能够更快地下载镜像。3.快速部署当公司进行业务迁移的时候(例如,公司的IDC机房要进行搬迁,业务要迁移到云服务器上),通常需要将所有应用在云服务器上重新部署,这些烦琐的工作极大地浪费了人力,并降低了工作效率。利用Docker容器可以简化这项工作,实现快速部署。人们只需要在云服务器上运行相应的容器,无须考虑环境的因素。Docker赋予应用的隔离性还独立于底层的基础设施。Docker默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,不会影
15、响到整台机器。1.3 容器生态系统容器生态系统1.3.1核心技术返回目录1.3.2平台技术 1.3.3支持技术 1.3 容器生态系统Docker容器能有今天的蓬勃发展,与它生态系统的支持是分不开的。这一套完整的生态系统就是Docker发展的基础,为Docker提供了一整套技术支持,包括核心技术、平台技术、支持技术。1.3.1 核心技术容器的核心技术是用来支持容器在主机上运行起来的技术,如图所示。接下来对容器核心技术进行详细介绍。1.容器规范虽然Docker是最常用的容器之一,但容器不是只有Docker,还有其他的容器,如rkt。为了容器技术能够有更加良好的发展,各个容器技术的开发公司联合成立了
16、OCI(Open Container Initiative,开发容器计划会)组织。OCI组织的主要目的就是定制一套完整的容器规范,以保证各个容器之间能够兼容。1.3.1 核心技术目前已经发布了两个容器规范,分别是runtime spec(运行环境规范)与image format spec(镜像格式规范),如图所示。这两个规范保证了不同公司开发出来的容器能够在不同的环境下运行,保证了容器的可移植性与互操作性。2.容器runtime容器runtime是指容器的运行环境,用来包容容器的运行。例如,要养殖一株花,就要给它阳光、空气和水,来营造一个舒适的环境。容器也是一样,想要让它运行起来就要给它相应的
17、环境。目前有三种主流的容器runtime,如图所示。1.3.1 核心技术LXC(Linux Containers)是一款比较老的容器runtime,最初Docker在Linux系统中就是用LXC作为容器runtime的,如图所示。rkt是CoreOS公司开发的容器runtime,目前是Docker默认使用的容器runtime,如图所示。runC是Docker公司自己专门为Docker容器开发的runtime,与rkt一样都是符合OCI规范的。1.3.1 核心技术3.管理工具管理工具是任何一款应用程序必备的要素,否则将无法对应用进行管理。例如,开车时,司机需要通过方向盘来对汽车进行操作,用户则需
18、要通过管理工具来对容器进行操作,如图所示。容器的管理工具不仅为用户提供管理界面,还与runtime进行交互,所以不同的runtime对应不同的管理工具。LXC对应的容器管理工具是lxd。runC对应的管理工具是Docker Engine,分为deamon与CLI两部分。rkt对应的容器管理工具是rkt CLI。1.3.1 核心技术4.定义工具容器的定义工具是用于定义容器的内容与属性,使用户随心所欲地创建自己想要的容器,如图所示。Docker image就是Docker镜像,用户会先根据自己的要求创建一个镜像,再根据配置好的镜像创建出容器。Docker Image相当于一幅设计蓝图,用户将蓝图规
19、划完成之后,Docker程序会按照蓝图创建容器。Dockerfile是一个文本文件,它包含了在创建镜像时需要使用的命令,这些都是用户事先配置完成的。在创建镜像时,只要指定一个Dockerfile,Docker程序就会按照Dockerfile中的命令进行镜像的创建。ACI(App Container Image,应用程序容器镜像)也是一种容器镜像,只不过它是由CoreOS公司开发的,专门用于rkt容器。1.3.1 核心技术5.容器仓库容器仓库并不是用来存放容器的,而是用来存放镜像的。用户可以将使用过的镜像上传到容器仓库中,下次使用时再从容器仓库中下载需要的镜像,并且仓库中的镜像在一定范围内是共享
20、的。各类容器仓库如图所示。Docker Registry支持企业自己搭建私有仓库。Docker Hub是Docker公司为用户提供的公有仓库,里面有许多的Docker镜像,为广大用户提供了极大的便利。Quay.io也是公有仓库,只不过是由红帽(Red Hat)公司提供的。1.3.1 核心技术6.容器OS容器OS(Operating System,操作系统)专门用于容器的运行。虽然几乎所有的系统都可以通过容器runtime来运行容器,但容器OS比起其他系统更加轻巧,更加适宜容器的运行,容器OS中的容器运行起来更加高效。常见的容器OS如图所示。1.3.2 平台技术在容器普及之前,企业为了便于管理,
21、服务器都是通过分布式部署,容器平台技术可以支持容器集群在分布式环境中运行,如图所示。接下来对容器核心技术进行详细介绍。1.容器编排引擎企业中根据业务需求随时有可能会对容器进行创建、迁移与销毁。容器编排引擎为工程师们提供了更方便的容器集群管理方式。常见的容器编排引擎如图所示。1.3.2 平台技术Docker Swarm是Docker公司于2014年12月发布的容器编排引擎。Kubernetes其实是Google(谷歌)公司早就开发出来的,直到2014年才启用。Kubernetes同时支持Docker容器与rkt容器,是目前国内企业中最常用的容器编排引擎之一。Mesos是一个分布式内核,Marat
22、hon是一个框架,二者结合即可为企业提供完整的容器集群管理引擎。2.容器管理平台容器管理平台与容器编排引擎一样都是用于管理容器集群,但容器管理平台是位于容器编排引擎之上的平台,它可以兼容各类容器编排引擎。容器管理平台将编排引擎的功能抽象化地呈现在Web页面中,使用户的管理方式更加简单。常见的容器管理平台如图所示。1.3.2 平台技术3.容器PaaSPaaS(Platform as a Service,平台服务)是指将研发平台或环境作为一种服务,通过商业模式提供给用户或企业。容器PaaS就是基于容器的PaaS,开发人员无须对低层设施进行操作,直接在PaaS上进行研发。常见的容器PaaS如图所示。
23、1.3.3 支持技术容器支持技术是用来支持容器设备的技术,有了这些技术的支持,容器才能完整地运行并运用到企业中,如图所示。1.容器网络容器运行在物理机中,一台物理机中又可能会有多个容器,由于业务的架构不同,容器与容器之间或者容器与其他设备之间,都可能需要网络的支持,但它们又相互隔离,容器网络技术的出现解决了各个设备之间复杂的网络问题。常见的容器网络技术,如图所示。1.3.3 支持技术Docker Network是Docker容器本身的网络技术,Flannel、Weave与Calico都是主流的第三方容器网络技术,企业根据业务的不同需求选择不同的容器网络技术。2.服务发现容器集群是动态的,访问量
24、增大就会自动创建容器,访问量减少就会自动销毁容器,还会根据业务需要进行容器迁移。在这样一系列的变动之后,业务信息也发生改变,服务发现技术将这些变动之后的最新信息通知客户机,让客户能够准确地访问服务。常见的服务发现技术如图所示。1.3.3 支持技术3.容器监控在传统的服务集群中,为确保业务的正常运行,需要对业务进行监控管理。容器集群是动态的,这无疑给容器监控带来了挑战。常见的容器监控如图所示。docker ps/top/stats是Docker自带的命令行形式的监控工具,docker stats API是通过接口使用户可以获取容器状态的工具。Sysdig、Weave Scope与Promethe
25、us都是常见的容器监控工具。1.3.3 支持技术4.数据管理容器集群既然为用户提供服务,就会产生数据,为保证这些数据的安全性,就有了容器的数据管理技术。容器管理技术可以使容器集群发生变化时,不对持久化数据造成损失,并且完整地保留新的数据。常见的容器管理技术如图所示。5.日志管理在用户访问网站时,Web服务会将访问信息记录到特定的文件当中,这些文件就是日志文件。常见的日志管理工具如图所示。1.3.3 支持技术Docker Logs是Docker容器自带的日志管理工具。Logspout通过容器接口从各个容器中收集日志信息,将收集到的日志信息发送给后续的程序进行处理,最终日志信息被写入日志系统中。6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 容器 实战 Docker Kubernetes 集群 完整版 ppt 全套 课件 电子 教案
链接地址:https://www.taowenge.com/p-76340816.html
限制150内