Docker 两大基石:Namespace 和 Cgroups

发布时间:2025-12-17 14:17:00 作者:cxyx 来源:本站 浏览量(0) 点赞(0)
摘要:Docker 两大基石:解密 Namespace 与 Cgroups 的核心魔力容器技术,尤其是 Docker,已经彻底改变了软件的构建、交付和运行方式。但其背后的魔力究竟是什么?为什么一个简单的进程,就能拥有一个“独立”的操作系统环境,并且不会拖垮整个宿主机?答案就藏在 Linux 内核提供的两大关键技术中:Namespace(命名空间) 和

Docker 两大基石:解密 Namespace Cgroups 的核心魔力

容器技术,尤其是 Docker,已经彻底改变了软件的构建、交付和运行方式。但其背后的魔力究竟是什么?为什么一个简单的进程,就能拥有一个独立的操作系统环境,并且不会拖垮整个宿主机?

 

答案就藏在 Linux 内核提供的两大关键技术中:Namespace(命名空间) 和 Cgroups(控制组)。

 

理解这两点,你就理解了容器的本质。

 

一、隔离的魔法:Namespace(命名空间)

如果你想让一个应用感觉它独占了整个系统,你需要隔离它的视图。这就是 Namespace 的职责。

 

Namespace 的核心思想是:将 Linux 系统中的全局资源进行抽象和分区。它为进程创建了一个私有的、独立的资源视图,让容器内的进程只能看到和使用这个私有视图中的资源。

 

容器本质上就是被 Namespace 隔离和 Cgroups 限制的宿主机进程。

 

1. Namespace 解决的核心问题:看到了什么?

当一个容器启动时,它并不会创建一个虚拟机,它只是在宿主机上启动了一个或多个进程。Namespace 的作用就是欺骗这个进程,让它以为自己是系统上唯一的进程,拥有自己独立的网络、文件系统等。

 

2. 六大核心 Namespace 类型

Docker 容器的完整隔离性正是通过组合使用以下不同类型的 Namespace 实现的:

image.png

通过 Namespace 的隔离,容器获得了独立性和安全性,这是容器技术存在的前提。

 

二、资源的边界:Cgroups(控制组)

光有隔离性还不够。如果一个容器进程意外进入死循环,疯狂占用 CPU 或内存,它仍然会拖垮整个宿主机。这时,就需要有人来扮演资源管理者的角色。

 

这就是 CgroupsControl Groups)的职责。

 

1. Cgroups 解决的核心问题:能用多少?

Cgroups 允许我们将一组进程组织成一个层级结构,并对这个组及其子组进行资源限制、配额分配和使用情况核算。它确保了资源的公平使用,防止了资源饥饿资源滥用

 

2. Cgroups 的三大功能:R.A.M.

Resource Limiting (资源限制): 限制一个容器最多能使用的资源量(如内存限制)。

Accounting (资源核算): 计量一个容器消耗了多少资源(用于监控和计费)。

Management (资源分配): 为容器设置资源使用优先级(如 CPU 权重)。

 

3. 核心 Cgroups 控制器(Subsystems

Cgroups 通过不同的控制器来管理特定的系统资源:

image.png

通过 Cgroups 的资源控制,容器获得了稳定性可靠性,保障了宿主机的稳定运行。

总结:Namespace Cgroups 的完美搭档

Namespace Cgroups 是容器技术不可或缺的一体两面。

image.png

正是 Linux 内核的这两项强大而精巧的机制,共同构建了 Docker 容器的轻量级、高效和安全的运行环境。下一次当你运行 docker run 命令时,请记住:你正在启动一个进程,而这个进程正在被 Namespace 隔离,并被 Cgroups 约束着,以一种全新的方式运行你的应用程序。

二维码

扫一扫,关注我们

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,版权登记,商标注册等

立即咨询 400-8050832