容器学习笔记(一)容器和虚拟机

最近在学习docker,本来本着只要学会怎么用就可以了的态度,学会了如何使用docker,但是总觉得缺少了什么,于是抱着钻研的精神一路钻研下去,想去看看docker是这么实现的,但是,由于本人并不是计算机科班出生,对操作系统和计算机网络的知识有所欠缺,因此啃得着实有些艰难,所以如果文章中有什么错误的地方希望大家指正。还有原谅我的博客里混杂着英文单词,因为我觉得很多情况下英文的表达要比中文更贴切。

首先,如果去网上搜docker的技术原理,基本上所有的博文都告诉你这种容器化的虚拟技术并不是什么新技术,那就让我们来看看docker到底用了哪些“旧酒”呢?

avatar

支撑着docker的核心技术有三个:namespace,Cgroup,UnionFS。nampace提供了虚拟层面的隔离,比如文件隔离,网络隔离等等,Cgroup提供了物理资源的隔离,比如cpu,内存,磁盘等等。UnionFS给docker镜像制作提供了技术支撑。

虚拟机和Docker的区别

avatar

在去介绍docker技术的三剑客之前,想给大家介绍一下容器技术和虚拟机技术的区别。

这一张图想必大家刚接触docker的时候一直看见吧,左边的是虚拟机的结构,右边是docker的结构,先讲vm的结构吧。

server:

这一层的话,我个人理解是硬件层,比如cpu,内存,硬盘

host OS:

这一层就是我们的宿主机的操作系统了,主要提的就是操作系统的内核,而内核是用于直接和和底下的硬件进行交互的,关于windows内核,我没有去做过多的了解,毕竟windows一般都是用于个人pc,而linux内核,一会儿讲容器的时候再详细展开吧。

hypervisor

虚拟化技术其实有很多种,这里的hypervisor(又称vmm,下面会用到)是运行在host os上,是type2型,它的处理方式是不与物理层接触,因此也被称为hosted hypervisor,它会提供虚拟出来的物理层资源给上方的guest os使用。在云计算中,通常情况hypervisor(kvm技术)只是负责cpu和内存的虚拟化,I/O虚拟化会由其他技术来完成。

在这里呢 我想多聊一些虚拟化技术,首先我们看一个 computer system architechture的图:
avatar
因为想要讨论VMs呢,肯定要涉及计算机构架的理论知识,这里呢,由于我不是科班出身,只能找了一篇文章翻译了一些,并加上自己的理解,英语好的同学可以直接看原文。其实看这种架构图可以一层一层的看,每一层之间都会定义好接口,上一层的业务完全不需要关注下一层到底干了什么,只需要使用下面那层提供的接口就可以了,我觉得这一特点放在计算机网络里尤其突出。
而这张图中显示主要的三层以及层与层之间的接口。

  • 指令集 ISA(Instruction Set Architecture):这是操作系统与硬件之间一层,硬件提供了一层接口供给操作系统进行调用,指令集里包括 数据处理与存储操作,算术逻辑单元,控制流等。突然想到前两天看的X86架构和ARM架构的区别,其中比较大的区别就是X86架构是执行复杂指令集运算,而ARM架构是执行精简指令集。而这些指令集只有在ring 0(内核态)模式下才能使用。
  • 应用二进制接口 ABI(Application binary interface):这指的是两个程序模块间的接口;通常其中一个程序模块是操作系统所提供的服务。这是维基百科的解释,有些模糊… 于是我尝试找到了一个比较容易理解的版本:ABI类似于API,它是一个已经编译好的APi(或者说是个机器语言层面的API),当你写代码时会通过API去调库(library),但是实际上当你的代码编译完成后,你的application会通过ABI去调用library的二进制代码。
  • API,相信大家已经很熟悉了,这里就不介绍了

然后大家已经知道type2型的hypervisor,它时运行在宿主系统上的一个模拟硬件资源以及调度的软件。那么为什么还要这个host os呢,于是type1 型的虚拟化技术满足了这个愿望,在这个系统中,hypervisor既是操作系统也是虚拟化软件,这种技术的优点是效率高,虚拟机安全性只依赖于vmm。

avatar

docker

关于docker这一块,它和vm不一样,它依赖于宿主的操作系统,相当于docker 容器依然是跑在host os上,但是它通过了一些技术手段实现各种隔离,比如内存隔离,存储隔离,cpu隔离。这也是它不能使用在windows上的原因,因为它并不支持windows内核,即使现在有windows版本的docker,也是运行在windows上的Linux虚拟机上。由于docker不需要去创建hyvpervisor层,因此相较于传统vm,docker有很多优点

avatar

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值