- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Docker学习之基础知识
Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。
图1虚拟机的GuestOS层和Hypervisor层在docker中被DockerEngine层所替代。虚拟机的GuestOS即为虚拟机安装的操作系统,它是一个完整操作系统内核;虚拟机的Hypervisor层可以简单理解为一个硬件虚拟化平台,它在HostOS是以内核态的驱动存在的。?
图1虚拟机
图二Docker
docker并没有和虚拟机一样利用一个完全独立的GuestOS实现环境隔离,它利用的是目前Linux内核本身支持的容器方式实现资源和环境隔离。简单的说,docker利用namespace实现系统环境的隔离;利用Cgroup实现资源限制;利用镜像实现根目录环境的隔离。
Docker优势
作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。
首先,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。
其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。
具体说来,Docker在如下几个方面具有较大的优势:
更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
更高效的虚拟化
Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
1、docker相对于物理机其计算能力几乎没有损耗,而虚拟机对比物理机则有着非常明显的损耗。虚拟机的计算能力损耗在50%左右。
2、运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有优势;
3、docker利用的是宿主机的内核,而不需要GuestOS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,避免了虚拟机启动时所需的系统引导时间和操作系统运行的资源消耗;
4、在应用程序内存访问上,虚拟机的应用程序要进行2次的虚拟内存到物理内存的映射,读写内存的代价比docker的应用程序高。
更轻松的迁移和扩展
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
更简单的管理
使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
与传统虚拟机比较
特性
容器
虚拟机
启动
秒级
分钟级
硬盘使用
一般为MB
一般为GB
性能
接近原生
弱于
系统支持量
单机支持上千个容器
一般几十个
Docker劣势
前面的内容主要论述docker相对于虚拟机的优势,但docker也不是完美的系统。相对于虚拟机,docker还存在着以下几个缺点:
资源隔离方面不如虚拟机,docker是利用cgroup实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。
安全性问题。docker目前并不能分辨具体执行指令的用户,只要一个用户拥有执行docker的权限,则他就可以对docker的容器进行所有操作,不管该容器是否是由该用户创建。比如A和B都拥有执行docker的权限,由于docker的server端并不会具体判断dockerclinet是由哪个用户发起的,A可以删除B创建的容器,存在一定的安全风险。
docker目前还在版本的快速更新中,细节功能调整比较大。一些核心模块依赖于高版本内核,存在版本兼容问题
Docker的基本概念
Docker包括三个基本概念
镜像(Image)
容器(Container)
仓库(Repository)
镜像(Image)
Docker镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或用户需要的其它应
您可能关注的文档
最近下载
- 初级会计职称考试教材《经济法基础》.pdf VIP
- 《运筹学》考试题及其答案.docx VIP
- 开题报告:人工智能赋能大学生心理健康状况自动监测及应用研究.docx
- 2024语文义务教育课程标准.pdf VIP
- 慢性缺血性脑血管病的护理PPT课件.pptx VIP
- 国家开放大学《创新思维训练与方法》形考任务1-4参考答案.pdf VIP
- 初中语文作文写作策略指导研究教学研究课题报告.docx
- IATF16949最新内审检查表整套.xls VIP
- 2023-2024学年四川省成都市成华区石室中学七年级下学期期中数学试卷及参考答案.pdf
- 重庆医科大学2022-2023学年《细胞生物学》期末考试试卷(A卷)附参考答案.docx
文档评论(0)