Docker 入门之原理了解
首先要知道docker是采用Go语言编写的。要了解学习go语言的请转战Go
1.namespace
Namespace也称命名空间、名称空间等,它表示着一个标识符(identifier)的可见范围。一个标识符可在多个名字空间中定义,它在不同名字空间中的含义是互不相干的。这样,在一个新的名字空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他名字空间中。
2.cgroups
cgroups也称控制组群(control groups),是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。cgroups的一个设计目标是为不同的应用情况提供统一的接口,从控制单一进程到操作系统层虚拟化(像LXC)。
3.unionFS
UnionFS也称联合文件系统(union file systems),Unionfs是用于Linux、FreeBSD和NetBSD的文件系统服务,它为其他文件系统实现联合挂载。它允许不同文件系统(称为分支)的文件和目录透明地覆盖,形成一个单一的连贯文件系统。在合并的分支中具有相同路径的目录的内容将在新的虚拟文件系统中的单个合并目录中一起看到。
4.container format
container format也称容器格式,一个多媒体容器格式是一种文件格式,它指定如何将数据存储在文件中。它并不指定数据应该如何编码。它也被称为meta-format,因为 它不是只存储实际数据,而且描述了数据信息是如何在文件中存储。音频或视频流可以使用许多不同的算法进行编码,但它们只是在很少的几种文件格式中存储。
docker 引擎将这些组件合并成一个封闭体叫一个 container format,也就是docker container。
ps:简单来说docker就是linux的一个进程。利用linux的namespace实现隔离,cgroups实现资源管理。
本作品采用《CC 协议》,转载必须注明作者和本文链接