【Docker学习总结】3.Docker 容器相关技术简介

本文深入探讨了Docker容器技术的两大核心组件:Namespace命名空间和Controlgroups(CGroup)控制组。Namespace实现了资源的隔离,如文件系统、进程、网络等;而CGroup则负责资源的管理和限制,包括内存、CPU等。两者结合赋予了Docker容器独立性和资源可控性的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker依赖Linux内核的特性,Namespace命名空间以及Control groups(CGroup)控制组,通过学习这两种特性,能够更好的帮助我们理解Docker容器的资源分配和管理。

一、Namespace命名空间

很多编程语言都包含了“命名空间”的概念,我们可以认为“命名空间”是一种“封装”的概念, 而“封装”本身实际上实现的是代码的隔离。
而在操作系统中,命名空间提供的是系统资源的隔离,而系统资源包括了进程、网络、文件系统等:

                                   

而实际上,Linux实现命名空间的主要目的之一,就是为了实现轻量级虚拟化服务,也就是我们说的容器。在同一个命名空间下的进程,可以感知彼此的变化,而对其它命名空间中的进程一无所知。这让就可以让容器中的进程产生一种错觉,仿佛它自己置身于一个独立的系统环境中,以此达到“独立”和“隔离”的目的。

我们从Docker公开的文档来看,它使用了5种命名空间:
(1)PID(Process ID) 进程隔离
(2)NET(NetWork) 管理网络接口
(3)IPC(InterProcess Communication) 管理跨进程通信的访问
(4)MNT(Mount) 管理挂载点
(5)UTS(Unix Timesharing System) 隔离内核和版本标识

那么,这些隔离的资源,是如何被管理起来的呢?这就需要用到------Control groups(CGroup)控制组了。


二、Control groups(CGroup)控制组

Control groups是Linux内核提供的,一种可以限制、记录、隔离进程组所使用的物理资源的机制。
最初是由google工程师提出,并且在2007年时被Linux kernel的内核中的2.6.24版本引进。可以说,Control groups就是为容器而生的,没有Control groups就没有容器技术的今天。

Control groups提供了以下功能:
(1)资源限制
例如,memory(内存)子系统可以为进程组设定一个内存使用的上限,一旦进程组使用的内存达到了限额,该进程组再发出内存申请时,就会发出“out of memory”(内存溢出)的警告。

(2)优先级设定
它可以设定哪些进程组可以使用更大的CPU或者磁盘IO的资源。

(3)资源计量
它可以计算进程组使用了多少系统资源。尤其是在计费系统中,这一点十分重要。

(4)资源控制
它可以将进程组挂起或恢复。
 

三、Namespace和CGroup带给Docker的能力


到这里我们了解了Namespace和CGroup的概念和职能,而这两个特性带给了Docker哪些能力呢?如下:
(1)文件系统隔离
首先是文件系统的隔离,每个Docker的容器,都可以拥有自己的root文件系统。

(2)进程隔离
每个容器都运行在自己的进程环境中。

(3)网络隔离
容器间的虚拟网络接口和IP地址都是分开的。

(4)资源的隔离和分组
使用cgroups将cpu和内存之类的资源独立分配给每个Docker容器。
--------------------- 
作者:光仔December 
来源:优快云 
原文:https://blog.youkuaiyun.com/acmman/article/details/83444348 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值