2.Docker的技术实现和组成

Docker的技术实现

Docker 的实现,主要归结于三⼤技术:命名空间 ( Namespaces ) 、控制组 ( Control Groups ) 和联合⽂件系统 ( Union File System ) 。
Namespace
命名空间是 Linux 核⼼在 2.4 版本后逐渐引⼊的⼀项⽤于运⾏隔离的模块。Linux内核中的命名空间就是能够将计算机资源进行切割划分形成独立的空间

Control Groups
资源控制组 ( 常缩写为 CGroups ) 是 Linux 内核在 2.6 版本后逐渐引⼊的⼀项对计算机资源控制的模块。

资源控制组就是控制计算机资源的,与隔离进程、网络、文件系统等虚拟资源为目的的Namespace不同,CGroups控制的是硬件资源,并且CGroups还有一个关键作用就是资源分配。

例如,我们在服务器上部署⼀个业务服务和⼀个健康监控服务。通常情况下,监控服务只会占⽤很少的计算机资源,但我们⽆法保证其不会因为⼀些逻辑问题产⽣ Bug 进⽽过分消耗计算机资源。⽽它申请的计算机资源越多,意味着业务服务所能使⽤的计算机资源也就越少,最后甚⾄可能造成物理服务器的崩溃。

上述的问题在没有隔离实现的普通运⾏环境下是⽐较难解决的,因为所有不从系统层⾯出发的限制程序资源使⽤的⽅式都并不完全有效。由于 CGroups 实现于操作系统,⽽操作系统垄断着系统资源的分配,所以其完全能够限制隔离环境下应⽤的资源占有量。

Union File System
联合⽂件系统 ( Union File System ) 是⼀种能够同时挂载不同实际⽂件或⽂件夹到同⼀⽬录,形成⼀种联合⽂件结构的⽂件系统。
在 Docker 中,提供了⼀种对 UnionFS 的改进实现,也就是 AUFS ( Advanced Union File System )。

AUFS 将⽂件的更新挂载到⽼的⽂件之上,⽽不去修改那些不更新的内容,这就意味着即使虚拟的⽂件系统被反复修改,也能保证对真实⽂件系统的空间占⽤保持⼀个较低⽔平。

例如Git,在 Git 中每进⾏⼀次提交,Git 并不是将所有的内容打包成⼀个版本,⽽只是将修改的部分进⾏记录,这样即使提交很多次后,代码库的空间占⽤也不会倍数增加。

同样的,通过 AUFS,Docker ⼤幅减少了虚拟⽂件系统对物理存储空间的占⽤。由此,Docker 也开创出了虚拟化领域很多新的轻量级解决⽅案

Docker的组成

之前提到了 Docker 实现容器引擎的⼀些技术,但那些都是⼀些相对底层的原理实现,在 Docker 将它们封装后,我们并不会直接操作它们。在 Docker 中,另外提供出了⼀些软件层⾯的概念,这才是我们操作 Docker 所针对的对象。
镜像
可以理解为一个只读的文件包,里面包含了虚拟环境运行最原始文件系统的内容。但是Docker的镜像和虚拟机的镜像是有区别的,Docker使用AUFS作为底层的文件系统实现,通过这种方式Docker实现是一种增量式的镜像结构。

每次修改镜像,Docker都会将修改铸造成一个新的镜像层。一个完整的镜像是由下层的所有镜像层组成,每个镜像层拿出来都可以和其下的所有镜像层组成完整镜像,所以镜像实质上是无法修改的。

容器
在容器技术中就是隔离虚拟环境的基础设施。而在Docker中,也被引申为隔离出来的虚拟环境。
镜像就好像是我们编程当中的类,而容器就好比一个类的实例。镜像存放的是不可变的东西,而容器运行后相当于一个活的空间。

网络
在Docer中不仅能对容器进行网络配置,还可以在容器之间建立虚拟的网络连接,将数个容器包裹同时和别的网络环境隔离。另外,利用一些技术Docker能够在容器中营造独立的域名解析环境,使得我们能不该代码和配置的情况下之间迁移容器,Docer会自动进行网络适配。利用这个技术还可以使两个物理机上的两个Docker加入到同一个虚拟网络,形成完全屏蔽硬件的效果。

数据卷
在以往的虚拟机中,我们通常采用把虚拟机的文件系统作为应用数据等文件的存储位置,这其实是不安全的,一但虚拟机出现问题导致文件系统无法使用,虽然可以通过重置镜像来还原文件系统,但是之前的数据也就没了。

为了保证数据的独立性,通常会单独挂载一个文件系统来存储数据,但这在虚拟机中是很繁琐的,既要考虑文件系统兼容性、配置问题等还要搞定挂载在不同的宿主机的实现实现方式。

但是,在Docer中通过底层的 Union File System 技术,可以简单快速的实现从宿主机进行文件系统的挂载,并且还能够建立独立的目录来进行持久数据或者容器间的共享。

在 Docker 中,通过这⼏种⽅式进⾏数据共享或持久化的⽂件或⽬录,我们都称为数据卷 ( Volume )。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值