在(一)初识Docker(1)——简介中曾经提到过两个名词,Namespace和Cgroups。这里简单的介绍一下,说不定会有用。
本节包括:Namespace命名空间、Cgroups(Control Groups) 控制组、Docker将两者结合使用的新能力。
Namespace 命名空间:
1.在编程语言中的命名空间概念。比如对代码进行封装,可以实现代码隔离。
2.在操作系统中命名空间实现了系统资源(进程,文件系统,网络等等)的隔离。
3.容器中单一命名空间的进程可以互相感知彼此,但是对其他命名空间的进程无法感知,以此达到独立和隔离的目的。
4.从Docker文档中有关于命名空间的介绍中可以知道,Docker有5种命名空间:
4.1 pid(Process ID) 进程隔离。
4.2 net(Network) 管理网络接口。
4.3 IPC(InterProcess Communication) 管理跨进程通信的访问。
4.4 MNT(Mount) 管理挂载点(跟文件系统相关)。
4.5 UTS(Unix Timesharing System) 隔离内核和版本标识。
Cgroups(Control Groups) 控制组:
Linux内核提供的可以限制、记录、隔离进程组所使用物理资源的机制。
Cgroups的功能:
1.资源限制:子系统可以为进程组申请一个内存使用的上线,当进程组使用的内存达到限额,再申请内存就会有Out of Memory(内存溢出)的消息。
2.优先级设定:可以设定一些进程组使用更大的CPU或者磁盘IO的资源。
3.资源计量:可以计算进程组使用的资源数量。
4.资源控制:可以将进程组挂起,恢复。
Docker将两者结合使用的新能力:
1.文件系统隔离:每个容器都有自己的root文件系统。
2.进程隔离:每个容器都运行在自己的进程环境中。
3.网络隔离:容器之间的虚拟网络接口和IP地址都是分开的。
4.资源的隔离和分组:Cgroups将CPU和内存等资源独立分配给每个Docker容器。
网友评论