《云计算虚拟化技术基础与实践》课件第九章 容器虚拟化技术基础.pptx
《《云计算虚拟化技术基础与实践》课件第九章 容器虚拟化技术基础.pptx》由会员分享,可在线阅读,更多相关《《云计算虚拟化技术基础与实践》课件第九章 容器虚拟化技术基础.pptx(68页珍藏版)》请在文库网上搜索。
1、本章重点1.了解容器虚拟化的基本原理。2.掌握Docker安装与部署过程。3.掌握Docker仓库搭建过程。4.掌握Docker镜像、Docker容器、Docker网络连接的基本原理和具体操作。容器虚拟化概述1.容器技术前世今生2.容器基本原理3.Docker起源及架构0 1容器虚拟化概述容器虚拟化提供了一种运行时环境,隔离了上层应用与下层操作系统、硬件的关联,便于更加高效的构建应用,也易于管理维护。在传统的软件行业中,开发人员的主要工作是应用程序的编码、构建、测试和发布,涉及应用程序和运行时平台这两层。而运维人员的工作则涉及从硬件、操作系统到运行时平台的安装、配置、运行监控、升级和优化等工作
2、。在现代计算机技术中,容器技术就是将应用程序打包到每一个单独的容器之中,通过这个封装的过程,将每个应用程序进行隔离,打断应用程序之前的依赖与连接关系。一个庞大的服务系统在容器技术的支持下,可以由许多不同的应用程序所寄居的容器组合而成,这种拆解再组合的过程,让应用程序之间的耦合度降到最低。1.容器技术前世今生最早的容器技术始于1979年提出的UNIX chroot,它最初是一个UNIX操作系统的系统调用,用于将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问这个新的位置,从而达到了进程隔离的目的。2000年,R&D Associates公司为FreeBSD引入了一个类似
3、于chroot的容器技术,名叫Jails。与chroot不同的是,它为文件系统、用户和网络等的隔离增加了进程沙盒功能。这是最早期,也是功能最多的容器技术。2008年,推出了Linux Container(简称为LXC),它是基于Cgroups和Linux命名空间Namespace推出了第一个最完善的Linux容器。2013年,dotcloud公司推出到现在为止最为流行和使用最广泛的容器Docker。2.容器基本原理容器本质就是宿主机上的一个进程,它的核心技术是Namespace和Cgroups。容器技术通过Namespace实现资源隔离,确保一个容器中运行的进程只会感知容器内进程的变化,不能影
4、响容器外的其他进程,同时也不会被容器外的其他进程所影响。通过Cgroups实现资源控制,可以用于进行资源的核算和限制。通过rootfs(Root FileSystem,根文件系统,简称为rootfs)实现文件系统隔离,再加上容器引擎自身的特性来管理容器的生命周期。2.容器基本原理1.Namespace资源隔离一个完整的容器需要做到六种基本隔离,也就是Linux内核需要提供六种Namespace隔离.Namespace隔离内容隔离内容Mount文件系统Network网络资源IPC信号量、消息队列和共享内存PID进程号UTS主机和域名User用户和用户组2.容器基本原理1.Namespace资源隔
5、离Namespace API的主要操作主要包括clone()、setns()以及unshare()。1)使用clone()函数在创建进程的同时创建新的Namespace2)使用setns()加入一个已经存在的Namespace3)使用unshare()在原先进程上进行Namespace隔离2.容器基本原理2.Cgroups资源隔离Cgroups用来限制、控制和分离一个进程组群的资源,如CPU、内存、I/O等。Cgroups是Linux内核提供的一种机制,这种机制可以根据需求把一系列系统任务及子任务整合到按资源划分等级的不同组内,从而为系统的资源管理提供一个统一的框架。Cgroups的主要功能:
6、Resource Limitation:Cgroups可以对任务使用的资源进行限制,比如设置内存使用上限以及限制文件系统的缓存等。Prioritization:Cgroups可以通过分配CPU时间片个数和磁盘I/O宽带大小来控制优先级。Accounting:Cgroups可以统计系统的资源使用量,主要目的是为了计费。Control:Cgroups可以进行挂起进程或恢复进程等操作。2.容器基本原理2.Cgroups资源隔离查看Linux内核中是否启用了Cgroups第一步,查看linux的内核版本号。第二步,查看内核版本对应的配置文件(对应的Cgroups的配置值为y,表示已经启用)。第三步,查
7、看Cgroups是否挂载成功(挂载成功,就会在/sys/fs/cgroup目录下看到相应文件)。rootlocalhost#uname rrootlocalhost#cat/boot/config-3.10.0-1160.15.2.el7.x86_64|grep CGROUProotlocalhost#mount-t cgroup3.Docker起源及架构2010年,几个大胡子年轻人在美国旧金山成立了一家做PaaS平台的公司,起名为dotCloud。dotCloud主要是基于PaaS平台为开发者或开发商提供相应的技术服务,具体来说,是和LXC(Linux容器虚拟技术)有关的容器技术。后来,do
8、tCloud公司将自己的容器技术进行了简化和标准化,并命名为Docker。2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定将Docker项目开源。IT工程师发现了Docker的优点,然后蜂拥而至,加入Docker开源社区。Docker开源后,迅速成为GitHub上最热门的项目。开源当月,Docker 0.1版本发布,此后的每一个月,Docker都会发布一个版本。到2014年6月9日,Docker 1.0版本正式发布。Docker是基于容器技术的轻量级虚拟化解决方案,利用Docker,开发者可以将应用及其依赖包打包到一个容器中,进行发
9、布。3.Docker起源及架构Docker并没有和虚拟机一样利用一个完全独立的Guest OS实现环境隔离,它利用的是目前Linux内核本身支持的容器方式实现资源和环境隔离。虚拟机技术和容器技术对比3.Docker起源及架构与虚拟机技术相比较,Docker容器技术有很多的优势:虚拟机技术和容器技术对比虚虚拟机技机技术容器技容器技术磁磁盘占用情况占用情况非常大,甚至上GB很小,甚至几十KB启启动速度速度很慢,常常需要几分钟很快,一般只需几秒钟运行形运行形态运行在Hypervisor上直接运行于宿主机的内核上,不同容器共享同一个Linux内核上并并发性性最多几十个虚拟机可以同时启动成百上千个容器性
10、能性能比宿主机差接近于宿主机本地进程资源利用率源利用率低高3.Docker起源及架构Docker是C/S(客户端Client-服务器Server)架构模式。1.Docker Client客户端和daemon守护进程。2.Docker镜像是用于创建Docker容器的模板,是Docker容器启动的基础。3.Docker Container容器是一个基于Docker镜像创建,包含运行某一特定程序所需要的OS、软件、配置文件和数据,可以一直运行的单元。4.Docker Registry仓库主要用来保存镜像文件。Docker的基本架构3.Docker起源及架构要启动一个新的Docker应用A,它的大致工
11、作流程:Docker工作流程Docker安装与部署1.Docker安装2.镜像加速0 2Docker安装与部署到目前为止,Docker已经原生支持几乎所有的Linux、Windows、Mac OS三大平台和主流的云平台(Amazon EC2,Google Cloud Platform,Rackspace Cloud和阿里云等)。Docker的安装指的是Docker Engine的安装,即Docker中核心的容器处理部分。准备工作:Docker只能安装在64位计算机上。对于Linux系统,内核版本必须大于3.10,如果小于3.10则会因为缺少Docker容器运行时所需要的功能而出错。1.Dock
12、er安装1.将yum包更新到最新。2.安装所需的软件包yum-utils、device-mapper-persistent-data和lvm2。3.设置仓库(使用阿里云的源地址)。4.安装最新版本的Docker CE,或转到下一步安装特定版本。6.启动docker,并设置为开机启动。7.运行“docker run hello-world”命令,验证是否正确安装Docker CE。rootlocalhost#yum updaterootlocalhost#yum install-y yum-utils device-mapper-persistent-data lvm2rootlocalhost
13、#yum-config-manager -add-repo http:/ install docker-cerootlocalhost#systemctl start dockerrootlocalhost#systemctl enable dockerrootlocalhost#docker run hello-world2.镜像加速由于Docker服务器在国外,有时在国内无法正常拉取镜像。为了解决这个问题,可以为Docker设置国内的镜像加速器。国内Docker镜像加速的组织有很多,在本节以阿里云为例,参考阿里云的官方操作文档进行设置。rootlocalhost#sudo mkdir-p/
14、etc/dockerrootlocalhost#sudo tee/etc/docker/daemon.json registry-mirrors:https:/* EOFrootlocalhost#sudo systemctl daemon-reloadrootlocalhost#sudo systemctl restart dockerDocker镜像1.Docker镜像基础2.构建镜像3.查看镜像4.分发镜像5.搜索镜像6.镜像其他操作0 31.Docker镜像基础Docker镜像类似于虚拟机的镜像,是一个只读的Docker容器模板。它是采用联合挂载技术实现的一个层叠式的文件系统。镜像中含
15、有启动Docker容器所需的文件系统结构和内容,是容器构建的基石。registry主要用来保存Docker镜像,包括镜像层次结构和关于镜像的元数据。repository是具有某个功能的Docker镜像的所有迭代版本构成的镜像组。manifest(描述文件)主要存在于registry中作为Docker镜像的元数据文件,在pull、push、save和load过程中作为镜像结构和基础信息的描述文件。image用来存储一组镜像相关的元数据信息。layer是一个Docker用来管理镜像层的中间概念,镜像是镜像层组成的,而单个镜像层可以被多个镜像共享。1.Docker镜像基础registry是repos
16、itory的集合repository是image的集合image是由多个layer组成的一个layer也可以被多个镜像所共享Docker镜像关键概念关系图1.Docker镜像基础Docker镜像的主要特点:分层:采用分层方式构建,每一个镜像都由一系列的镜像层组成。写时复制:采用写时复制策略,多个容器间共享镜像,所有镜像层都以只读方式挂载到一个挂载点,上面附加一个可读写层。当需要修改镜像的文件时,只对最上方的读写层进行改动,不覆盖下层已有文件系统的内容。联合挂载:联合挂载可以在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,最终可见的文件系统将会包含整合之后的各层文件和目录
17、。1.Docker镜像基础假设某一个镜像一共有两层,第一层有三个文件夹,第二层有两个文件夹,使用联合挂载技术叠加后,从内核角度能够显式区分开两个层次,但是从用户的角度来看,只可以看到五个文件夹,感觉不到分层的存在。从用户的角度查看分层文件系统2.构建镜像镜像的构建是Docker工作流程的第一步,有了镜像才能运行容器。构建一个Docker镜像的常见方法有两种,一种是通过命令“docker commit”构建镜像,一种是通过Dockerfile文件构建镜像。2.构建镜像1.使用docker commit命令构建镜像举例说明:通过镜像centos:7启动一个容器,在容器中新建一个1.txt文件,内容
18、为“This is a test”,用docker commit命令提交新容器为镜像。1)下载镜像centos:7,并利用镜像来启动一个交互式容器commit_test。2)在容器中新建一个1.txt文件,内容为“This is a test”,然后退出容器。rootlocalhost#docker pull centos:7root5f29ebd5c1ac/#echo This is a test 1.txtroot5f29ebd5c1ac/#exit2.构建镜像1.使用docker commit命令构建镜像举例说明:通过镜像centos:7启动一个容器,在容器中新建一个1.txt文件,内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 云计算虚拟化技术基础与实践 云计算虚拟化技术基础与实践课件第九章 容器虚拟化技术基础 计算 虚拟 技术 基础 实践 课件 第九 容器