《Linux容器云实战——Docker与Kubernetes集群完整版ppt全套课件整本书电子教案.pptx》由会员分享,可在线阅读,更多相关《Linux容器云实战——Docker与Kubernetes集群完整版ppt全套课件整本书电子教案.pptx(715页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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
26、.容器安全容器的安全性是企业工程师们时刻要关注的事,也是整个企业都需要重视的事情。常见的容器安全工具如图所示。Docker本身也是有安全机制的,它通过对资源的限制与对信息的过滤来提高容器的安全性。另外,还有其他的第三方安全工具,如Docker Bench、Clair等。Docker Bench会按照相关安全规范来对容器进行一系列检查,Clair是通过对镜像文件的扫描来发现容器的潜在风险。本章小结本章介绍了容器的基本概念、虚拟化技术、Docker容器相对于传统虚拟化技术的优势,以及Docker容器在企业项目中存在的必要性。可以清晰地感受到Docker容器在生产环境中带给我们的巨大便利,以及容器对
27、于企业的重要性。希望大家通过本章的学习可以对Docker与容器技术的概念有一定的了解,以便更好地学习后面的章节。第2章 Docker安装Windows安装DockerLinux 安装DockerDocker加速器 Windows安装Docker点击查看本小节知识架构2.12.1Linux安装Docker 2.22.2点击查看本小节知识架构Docker加速器2.32.3学习目标了解了解掌握熟悉了解在不同操作系统中安装Docker1 1掌握Docker的工作原理4 42 2了解安装Docker的位置3 3熟悉不同途径获取DockerDocker作为新兴的容器技术,目前在企业中得到了广泛的应用,市场
28、也十分渴望相关技术人才。由于各企业使用的服务器系统有所差异,本章将详细介绍如何在Windows、Linux以及Mac系统下安装Docker。2.1 Windows安装安装 Docker2.1.1Docker版本返回目录2.1.2通过官方网站安装Docker 2.1.3通过Docker Toolbox安装Docker2.1.1 Docker版本Docker原本是dotCloud公司旗下一个业余的开源产品,随着Docker的流行与发展,dotCloud公司更名为Docker公司,并开启了商业化之路,Docker容器从17.03版本开始分为CE(Community Edition,社区版本)与EE(
29、Enterprise Edition,企业版本)。就像是TIM与QQ,都是由同一家公司开发,用途都相同,但针对不同的人群,如图所示。Docker CE是免费Docker产品的新名称,Docker CE并没有降低性能,它包含完整的Docker平台,非常适合开发人员和运维团队构建容器App。Docker EE包含额外的付费服务,因为安全性更高,更加适合在企业中使用。Docker公司为Docker CE与Docker EE提供了不同的版本迭代计划。2.1.1 Docker版本Docker CE有两种版本。Edge版本可以说是Docker CE的测试版,Docker公司对一个月内发现的Edge版本所有
30、bug进行修复,并发布最新版本。所以Edge版本每个月都有新版发布,主要面对那些喜欢尝试新功能的用户。Stable版本是Docker CE的稳定版,Docker公司对四个月内发现的Stable版本所有bug进行修复,并发布最新版本。所以Stable每四个月就发布一次新版,适用于希望更加容易维护的用户。Docker EE的版本号与Docker CE的Stable版本一致,但它每一个版本的维护周期是一年。Docker CE与Docker EE的版本规划如图所示。2.1.1 Docker版本除此之外,Docker CE与Docker EE所支持的系统也有区别,如表所示。2.1.1 Docker版本从
31、表中可以看出,虽然Docker CE与Docker EE支持的系统存在着差异,但其中使用范围较广的Linux的CentOS与Ubuntu系统是Docker CE与Docker EE都可以支持的。2.1.2 通过官方网站安装Docker在Windows操作系统中安装Docker时,要确定本机CPU开启虚拟化功能,因为Docker程序依赖虚拟化技术,不开启虚拟化功能是无法正常使用Docker的。CPU的虚拟化功能要在开机时进入BIOS模式开启,不同品牌的计算机操作流程略有不同。开启后可以在任务管理器中查看是否开启成功,如图所示。2.1.2 通过官方网站安装DockerDocker可以在主流的操作系
32、统和云平台上使用,如Windows操作系统、MacOS和Linux操作系统等。但针对Windows操作系统目前Docker官方网站仅有Windows 10专业版和企业版的安装包,Windows7/Windows8/Windows10家庭版需要通过Docker Toolbox来安装。用户可以通过访问Docker官方网站获取对应版本的Docker,Docker官方网站如图所示。2.1.2 通过官方网站安装Docker单击页面右上角的Get Started,在页面下方会出现获取Docker的入口,选择Download for Windows获取支持Windows系统的Docker,如图所示。2.1.
33、2 通过官方网站安装Docker进入Docker下载页面后,单击Please Login To Download,如图所示。在Docker官方网站获取Docker需要注册一个Docker Hub账号,没有的话可以先到docker Hub官方网站注册,注册完就可以单击Get Docker进行下载了,Docker下载过程如图所示。2.1.2 通过官方网站安装Docker下载完成后,本地新增了一个Docker for Windows Install.exe文件,如图所示。Docker for Windows Install.exe文件是Docker在Windows系统中的安装程序,双击它之后Dock
34、er开始安装。安装之后,双击桌面图标即可启动Docker。2.1.3 通过Docker Toolbox安装Docker2.1.2节中介绍了如何从Docker官网下载安装Docker,下面介绍使用Docker Toolbox来安装Docker的方法。Docker Toolbox是Windows系统专属的Docker客户端。如果用户无法使用Docker for Windows Install.exe安装Docker,例如,用户系统是Windows10家庭版,就可以使用Docker Toolbox安装Docker。选择到阿里云开源镜像站下载Docker Toolbox,进入网站后,单击docker-
35、toolboxwindowsdocker-toolbox dockerToolbox-18.03.0-ce.exe 进行下载。下载完成后,本地会新增一个DockerToolbox安装程序,如图所示。2.1.3 通过Docker Toolbox安装Docker双击运行DockerToolbox-18.03.0-ce.exe开始安装,建议勾选“Help docker improve Toolbox”选项,勾选后用户的错误报告发会以匿名的方式发给相关工作人员,用于后期版本的优化与整改,所有内容都会保密,如图所示。2.1.3 通过Docker Toolbox安装Docker单击Next,会被提示需要安
36、装一些依赖包,默认都安装即可,如图所示。2.1.3 通过Docker Toolbox安装Docker以下为所需安装依赖详解。Docker Client for WindowsWindows操作系统中Docker的客户端。Docker Machine for WindowsDocker Machine是Docker官方提供的一个工具,它可以帮助在远程的机器上安装Docker,或者在虚拟机上直接安装虚拟机并在虚拟机中安装Docker,还可以通过Docker-machine命令来管理这些虚拟机和Docker。docker Compose for WindowsDocker Compose是一个命令行
37、工具,用于批量创建或管理容器。VirtualBoxVirtualBox是一款开源的虚拟机软件,对Docker使用起辅助使用。2.1.3 通过Docker Toolbox安装DockerKitematic for Windows(Alpha)Kitematic是一个简单的Docker容器管理工具。Git for WindowsGit for Windows主要提供了一个轻量级、本地化的Git命令行工具,提供了命令行下的全功能界面操作。Docker安装成功后,桌面出现三个图标,分别是Oracle VM VirtualBox、Kitematic(Alpha)、Docker Quickstart Te
38、rminal,双击带有Docker图标的Docker Quickstart Terminal启动Docker,如图所示。2.1.3 通过Docker Toolbox安装Docker首次启动Docker时需要从Github开源代码下载boot2Docker.iso,可能要等待一段时间,下载完成后就可以看到Docker启动并正常运行了,如图所示。从图中可以看出,Docker默认使用的IP是192.168.99.100,使用终端对这个IP进行连接。通过用户名与密码即可登录,Windows系统上安装的Docker默认的用户名为Docker,密码为tcuser。2.1.3 通过Docker Toolbo
39、x安装Docker登录Docker之后,可以通过一些小命令来检测一下Docker,例如,查看当前安装Docker的版本信息。示例代码如下:2.1.3 通过Docker Toolbox安装Docker服务名称后边跟上“version”,这条命令通常是用来查看服务版本信息。查看版本信息一般来验证软件是否安装成功,看到如上信息说明Docker在Windows上安装成功!2.2 Linux安装DockerLinux操作系统是当前企业中使用最多的操作系统,这是因为其开源、安全、稳定的特性与企业的需求相契合,并且无论是Docker EE还是Docker CE都支持Ubuntu与CentOS。Linux系统
40、安装Docker建议满足两个条件;首先,用户所使用的Linux是64位的操作系统;其次,系统内核版本至少要在3.10版本以上。本书以CentOS为例。CentOS(Community Enterprise Operating System,社区企业操作系统),是Linux发行版之一,是以Red Hat Linux系统为基础被开发出来的Linux开源系统,如图所示。2.2 Linux安装DockerCentOS具有很高的稳定性,甚至有些企业用它来代替企业版Red Hat Linux。Red Hat Linux部分开源,而CentOS完全开源,在CentOS的官方网站就可以获取CentOS的系统镜
41、像,如图所示。2.2 Linux安装Docker首先查看系统信息与内核版本,示例代码如下:系统满足Docker安装条件,开始安装Docker,示例代码如下:2.2 Linux安装Docker这里使用的是yum安装,yum是一款应用程序管理器。背后也有一个基于Red Hat的软件仓库来存放软件包,yum仓库是一个专属于CentOS的软件仓库,也叫作yum源。看到“Complete!”时,说明安装已经完成!然后验证Docker的版本信息,示例代码如下:2.2 Linux安装Docker通过版本信息可以看出,Docker已经安装成功,启动Docker,示例代码如下:在CentOS中,systemct
42、l命令通常用来管理服务状态,如启动、关闭、临时关闭、永久关闭等。为了便于管理,安装完成之后可以为Docker设置开机自启,在下一次开启机器时,Docker服务会随着机器的启动而启动。设置Docker开机自启,示例代码如下:从上面示例可以看到,Docker的开机自启也用到了systemctl命令。接下来,验证Docker能否运行起来。2.2 Linux安装Docker下载任意一个安装包,由于hello-world是一个较小的安装包,这里就以hello-world为例,示例代码如下:2.3 Docker加速器加速器2.3.1了解Docker加速器返回目录2.3.2配置Docker加速器 2.3.1
43、 了解Docker加速器用户在使用 Docker 通常需要从官方网站获取镜像,但是Docker官方网站在国外,有时因为网络原因,拉取镜像的过程非常耗时,严重影响Docker用户体验。因此DaoCloud公司推出了加速器工具解决这个难题。加速器通过智能路由和缓存机制,极大地提升了国内网络访问Docker官方网站的速度。DaoCloud公司为了降低国内用户使用Docker的门槛,提供永久免费的加速器服务。目前,Docker加速器已经拥有了广泛的用户群体,并得到了Docker用户的信赖。Docker加速器支持Linux、MacOS以及Windows操作系统,可以满足大多数用户的需求。但Docker加
44、速器对Docker的版本有一定的要求,Docker1.8或更高版本才能使用。2.3.2 配置Docker加速器访问DaoCloud官方网站,首先注册DaoCloud账号,然后进入自己的控制台,单击加速器图标,如图所示。然后进入Docker加速器配置页面,了解MacOS以及Windows操作系统的配置方法,这里不做赘述。另外,国内公有云为了方便用户使用容器,也都推出了Docker镜像加速器服务,如图所示。2.3.2 配置Docker加速器访问DaoCloud官方网站,首先注册DaoCloud账号,然后进入自己的控制台,单击加速器图标,如图所示。然后进入Docker加速器配置页面,了解MacOS以
45、及Windows操作系统的配置方法,这里不做赘述。另外,国内公有云为了方便用户使用容器,也都推出了Docker镜像加速器服务,如图所示。本章小结本章介绍了Docker容器在不同系统中的不同安装方式、不同安装包的获取方式,以及Docker加速器的作用。通过本章的学习,大家在安装Docker时,遇到不同系统的服务器,也会从容应对。接下来的章节将详细介绍Docker的工作原理及使用方式。第3章 Docker镜像base镜像镜像的本质查找本地镜像构建镜像Docker HubDocker镜像优化 base镜像3.13.1镜像的本质3.23.2查找本地镜像3.33.3点击查看本小节知识架构构建镜像3.3.
46、4 4点击查看本小节知识架构Docker Hub3.53.5点击查看本小节知识架构Docker镜像优化3.63.6学习目标理解了解掌握熟练理解镜像的概念1 1掌握镜像的简单操作方法4 42 2了解从官方网站获取Docker镜像3 3熟练构建自己的镜像Docker镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。Docker镜像是一个只读的模板,一个独立的文件系统,包括运行一个容器所需的数据,可以用来创建容器。3.1 base镜像base(基础)镜像是指完全从零开始构建的镜像,它不会依赖其他镜像,甚至会成为被依赖的镜像,其他镜像以它为基础进行扩展。通常base镜像都是Li
47、nux的系统镜像,如Ubuntu、CentOS、Debian等。下面通过Docker拉取一个base镜像并查看,这里用以CentOS为例,示例代码如下:3.1 base镜像从以上示例中可以看出,一个CentOS镜像大小只有202MB,但在安装系统时,一个CentOS大概有几GB。这与操作系统有关,先观察Linux原本的操作系统结构,如图所示。Kernel是内核空间。bootfs文件系统在Linux启动时加载。rootfs是包含操作命令的文件系统。base镜像的创建过程中,Kernel、bootfs与rootfs都会加载,然后bootfs文件系统(包括Kernel)被卸载掉。镜像只保留rootf
48、s文件系统,供用户进行操作。bootfs与Kernel将与宿主机共享。另外,为了增加Docker的灵活性,base镜像提供的都是最小安装的Linux系统。3.1 base镜像Linux系统不同的发行版之间最大的区别就是rootfs的不同,例如,Ubuntu系统的应用程序管理器是apt,而CentOS是yum。由此可见,只要提供不同的rootfs文件系统就可以同时支持多种操作系统,如图所示。从图可以看到,两个不同的Linux发行版提供了各自的rootfs文件系统,而它们共用的是底层宿主机的Kernel。假设宿主机的系统是Ubuntu 16.04,Kernel版本是4.4.0,无论base镜像原本
49、的发行版Kernel版本如何,在这台宿主机上都是4.4.0。3.1 base镜像下面通过示例来验证,示例代码如下:从上述示例中可以看出,base镜像与宿主机的Kernel版本都是3.10。base镜像的Kernel是与宿主机共享的,其版本与宿主机是一致的,并且不能进行修改。3.2 镜像的本质Docker镜像是一个只读的文件系统,由一层一层的文件系统组成,每一层仅包含前一层的差异部分,这种层级文件系统被称为UnionFS。大多数Docker镜像都是在base镜像的基础上进行构建,每进行一次新的创建就会在镜像上构建一个新的UnionFS。查看ubuntu:15.04镜像的层级结构,示例代码如下:3
50、.2 镜像的本质通常,对Docker的操作命令都是以“docker”开头。pull是下载镜像的命令,在英文中是“拉”的意思,所以下载镜像又叫作拉取镜像。上述示例中,第5行到第8行是每一层UnionFS的ID号,第9行是整个镜像的ID号,这个ID号可以用来操控镜像。然后,查看镜像,示例代码如下:3.2 镜像的本质在以上示例中,不仅可以看到先前下载的Ubuntu:15.04镜像,还可以看到其他镜像,说明“docker images”是查看本地所有镜像的命令。而查看到的信息中,除了镜像名称,还有版本号、镜像ID号、创建时间以及镜像大小。接着,通过命令查看镜像的构建过程,示例代码如下:3.2 镜像的本