您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

容器技术概念详解

在前面的章节里,我们安装了 Linux,也安装了 Docker,接下来是不是该上手 Docker 的使用了呢?

先不要着急,通过的章节介绍,相信我们已经对 Docker 有了初步的了解。但是回想下我们过往的学习经历,每当接触新的技术时,总会有一种陌生感,这个感觉主要来源于我们对这门新技术的基础概念没有认知,或者是理解得不够准确。这种陌生感可能会导致两个问题:

要排除这种陌生感,就一定要把最核心的基础搞明白,心急是吃不了热豆腐的。

我们知道 Docker 是开源的容器引擎,它的核心是容器技术。那么容器技术到底是什么呢?这一节我们就一起来了解下。

2000 年,随着 FreeBSD 4.0 的发布,容器技术正式对外公开,这种技术可将 FreeBSD 系统分区为多个子系统,称为 Jail。Jail 是作为安全环境而开发的,Jail 的目的是让进程在经过的 chroot 环境中创建,而不会脱离和影响整个系统,在 chroot 环境中,已经对系统、网络和的访问都实现了虚拟化。2001 年,借助 VServer 项目,容器技术进入了 Linux。这项工作的目的是在高度独立且安全的单一环境中运行多个 Linux 服务器,之后 Linux 容器技术开始逐渐成形。

容器技术其实是一种基于虚拟化的沙盒技术。

沙盒(sand@R_188_2@)是一种安全机制,为运行中的程序提供隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。

在计算机中,虚拟化是一种资源管理的技术,它将计算机的各种实体资源,如、网络、内存及存储等,进行抽象后展示出来,使更方便地使用这些资源。

我们举一些常见的例子:

平台虚拟化是针对计算机和操作系统的虚拟化,也就是最常见的一种虚拟化技术,Hyper-V,Virtual@R_188_2@,VMware 等产品都是应用这类虚拟化技术。

资源虚拟化是指对特定的计算机系统资源的虚拟化,例如对内存、网络资源等等。

应用程序虚拟化的最典型的应用就是 JAVA,的程序在指定的 JVM 虚拟机中运行。

那么容器技术属于哪一种虚拟化呢?

现在的容器技术,运行在操作系统之上,使用操作系统自身的机制(Namespace,CGroup,下面的章节会详细讲解),提供了相对独立的应用程序运行的环境,能够让应用程序间可以互不干扰地独立运行,也提供了资源控制的,能对其在运行中所使用的资源进行干预,可以理解为操作系统虚拟化的范畴。

假定我们编写了批量运算加法的程序,这个程序的输入需要从 A 中读取,处理结果保存到另 B 中。当操作系统执行这个加法程序时,操作系统会根据程序的指引,从 A 中读取数据,保存到内存里,然加法指令, 与内存协作,完成了运算,将结果保存到 B 中。

在程序的运行过程中,计算机内存的数据, 寄存器里的数据,内存堆栈中的指令,读取写入的,以及运行过程中计算机的状态,这些信息的集合,就是进程。

对于进程来说,它的静止态就是二进制可执行,它的运行态就是与它相关的计算机数据和状态的总和。而子进程的所有资源都继承父进程,只要控制住父进程的资源,通过父进程衍生的子进程也会被控制。

所以,简单来说容器技术的实质就是:通过各种手段,、约束"容器”进程的运行状态,按照的意图“误导”它能看到的资源,控制它的边界,从而达到环境隔离,或者说虚拟化的目的

本节的可能有些抽象,别担心,到这里还不需要大家理解容器具体,本节最大的意义在于告诉大家以下两点:


联系我
置顶