Docker的基础理论与关键点理解

发布时间:2024-04-07 点击:127
一般来说,虚拟化既可以通过硬件模拟来实现,例如 vmware、kvm等,主要是通过虚拟硬件的方式,重新创建一个操作系统,操作系统本身并不知道当前的硬件是否真的存在,这种形式又称为操作系统级虚拟化。
而现在以docker为代表的容积技术,为虚拟化技术提供了创新和突破。
1、什么是docker?
docker 是使用容器技术实现应用虚拟化的一个开源项目。
它与传统的虚拟机技术有本质的区别,虚拟机技术虚拟出来的单个虚拟机可以部署各种应用,本质来说就是多了一台可迁移的操作系统;而docker是一个轻量级容器,主要是针对应用进行定制,一个docker容器封装一个应用,提供了这个应用运行的环境,所以被称为“应用的集装箱”,这样细粒度更高。
2、为什么要使用docker?
docker是基于操作系统的软件,他利用了操作系统已有的特性,可以实现远超传统虚拟机的轻量级虚拟化,主要有如下几点:
1、更快的交付和部署,开发人员可以通过镜像快速构建开发环境,测试人员可以通过完全相同的环境来进行测试,通过docker部署也会变的简单高效。
2、更高效的资源利用,docker本身对资源的消耗极低,这方面的性能传统虚拟机是无法比拟的,这样一台服务器可以构建更多的docker应用。
3、更轻松的扩展和迁移,docker几乎可以在任何平台上运行。
4、更简单的更新管理,通过dockerfile,可以通过简单的修改可以实现以往大量的更新工作。
3、docker的核心概念
使用docker所有的时间基本都是在处理它的三大核心要素:镜像、容器、仓库。
镜像 是一个只读模版,是对容器的定义,就像java 中 的类一样,通过类可以创建实例,实例就是容器,容器则是我们真正运行起来提供服务的应用,通过提交容器可以形成新的镜像,迁移镜像又可以在其他服务器生成容器。
仓库是指存放镜像的地方,目前docker的仓库(docker hub)中存放了非常多的基础镜像文件,我们可以直接下载作为应用的基础模版。
当然我们也可以搭建我们的私人仓库,在内部网络内共享我们的镜像。
4、docker 核心技术实现
docker 是诞生于 linux的一种容器化虚拟化技术,深度运用了linux操作系统的多向底层支持技术,通过这些技术来实现 docker 的容器级虚拟化。
1、使用namespace实现资源隔离
命名空间(namespace)是linux内核的一个强大特性,利用这一特性每个容器都拥有自己独立的命名空间,运行在其中的应用就像在独立的操作系统环境中一样,容器之间资源独立、互不影响。
这种资源隔离特性隔离了主机名与域名、进程编号、内存、网络设备、文件系统、用户和用户组,虽然所有的容器都通过操作系统共享了主机的硬件资源,但是通过namespace实现了基于操作系统级别的资源隔离,这种形式效率很高。
2、使用 control group 实现资源限制
控制组(control group)也是linux内核的一个特性、主要对共享资源进行隔离、限制。docker通过控制分配到容器的资源,实现了避免多个容器同事运行是对宿主机系统的资源竞争。
控制组主要提供了如下功能:
资源限制,可以将组设置为不超过设定的内存限制。 优先级,设置优先级可以让一些组优先得到更多的cpu资源。 资源审计,对每个组分配的资源进行统计。 隔离,是一个组不能看到另一个组的资源(包括进程,网络连接和文件系统)。 控制,控制挂起,重新启动等操作。 3、使用联合文件系统使镜像管理变得快速和轻量级
联合文件系统是linux一种高性能分层文件系统,目前有多种实现技术方案,它具有两个基本特性:
每一次修改作为一次提交,并层层叠加 将不同的目录挂在到同一个虚拟文件系统下
联合文件系统是docker实现的基础技术,docker镜像可以通过分层来继承,例如 用户基于基础镜像制作各种不同的应用镜像,这些镜像通用了一个基础镜像,这些应用只用记录这些分层信息,从而大大提升了存储效率。
我们可以通过 docker history 命令查看一个镜像的分层组成。
将不同的目录挂在到同一个虚拟文件系统下,这样就实现了外置数据卷的挂载。
对于docker镜像来说构成镜像的这些层是不可修改的,只读的,当docker利用镜像启动一个容器时,将在镜像文件系统的最顶端挂载一个新的可读写层给容器,容器中内容的更新会发生在可读写层。当所操作的对象位于较深的层时,需要先复制到最上面的可读写层,当数据对象较大时,io性能会较差,所以一般通过数据卷挂载的方式,而不是直接修改镜像内的数据就是这个原因。

建站是买云存储还是云服务器
注册do域名的方法有哪些,都有哪些注意事项?
求建站的流程 建站选哪种虚拟主机好
设计网站模板为何要交互设计?网站建设后端制作是什么?
域名认证的流程是怎样的?域名认证有什么好处?
怎样制作网站?建设一个网站需要多少钱?
网站打开不正常有乱码显示
whois 中文域名能获得哪些信息?为什么会有中文域名?