news 2026/7/22 5:49:02

Docker 两大基石:Namespace 和 Cgroups

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 两大基石:Namespace 和 Cgroups

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

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

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

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

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

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

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

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

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

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

2. 六大核心 Namespace 类型

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

Namespace 类型隔离的资源实现的效果
PID进程 ID容器有自己的PID 1(初始化进程)。看不到宿主机上的完整进程列表
NET网络栈容器有自己的网络设备、IP 地址、路由表
MNT文件系统容器有自己的根目录和文件系统结构,通过UnionFS实现高效叠加。
UTS主机名容器可以设置自己的主机名,不影响宿主机和其他容器。
IPC进程间通信隔离 System V IPC 资源,防止容器间干扰。
USER用户和组 ID隔离用户权限。容器内的root用户可以被映射为宿主机上的非特权用户,增强安全性。

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


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

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

这就是 Cgroups(Control Groups)的职责。

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

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

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

  • Resource Limiting (资源限制): 限制一个容器最多能使用的资源量(如内存限制)。
  • Accounting (资源核算): 计量一个容器消耗了多少资源(用于监控和计费)。
  • Management (资源分配): 为容器设置资源使用优先级(如 CPU 权重)。

3. 核心 Cgroups 控制器(Subsystems)

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

Cgroups 控制器管理的资源实际应用示例
cpuCPU 时间使用--cpu-shares分配相对权重;使用--cpus限制绝对核心数。
memory内存和 SWAP使用-m--memory限制容器可使用的内存上限。
blkio块设备 I/O限制容器对磁盘读写的速率,避免 I/O 密集型容器独占磁盘。
pids进程数量限制容器内可以启动的进程和线程的总数,防止叉炸弹(Fork Bomb)

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


总结:Namespace 与 Cgroups 的完美搭档

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

特性NamespaceCgroups
目标隔离性资源控制
实现效果虚拟化环境(独立视图)资源边界(限制用量)
类比独立房间的钥匙房间内的水电表

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 6:30:58

C51_74HC595串口转并口

文章目录一、74HC595   1、芯片引脚   2、内部框图   3、时序操作二、单芯片工模式   1、原理图   2、驱动代码     1)、74hc595.h     2)、74hc595.c     3)、mian.c三、级联工作模式   1、原理图   2、驱动代码 …

作者头像 李华
网站建设 2026/7/21 19:50:05

C51_HC-SR04超声波模块

文章目录一、HC-SR04   1、电气参数   2、引脚二、HC-SR04工作原理   1、基本工作原理   2、超声波时序图   3、原理图三、代码实例   1、UT.h   2、UT.c   3、main.c   4、实例现象一、HC-SR04 HC-SR04 超声波测距模块可提供 2cm-400cm 的非接触式距离感测功…

作者头像 李华
网站建设 2026/7/17 12:32:05

C51_AH3144霍尔传感器

文章目录一、霍尔传感器   1、霍尔传感器分类   2、AH3144:二、代码实例   1、查询方式(物体计数)   2、外部中 断方式(电机测速)   3、实例现象一、霍尔传感器 霍尔传感器是一种基于霍尔效应的磁敏传感器&a…

作者头像 李华
网站建设 2026/7/21 9:23:32

进程内存统计

参考链接 https://help.aliyun.com/zh/arms/application-monitoring/developer-reference/memory-metrics

作者头像 李华
网站建设 2026/7/22 4:49:22

电动汽车永磁同步电机的电磁设计与最优控制探索

永磁同步电机具有效率高、功率密度大、鲁棒性强以及调速范围广等优点,被广泛应用于家用电器、航空航天、轨道交通与电动汽车等领域,是当前电机领域研究和应用热点。 本文以电动汽车驱动用永磁同步电机电磁设计和最优控制为研究内容,对永磁同步…

作者头像 李华
网站建设 2026/7/21 17:36:35

如何快速配置glibc-all-in-one:完整安装与使用指南

如何快速配置glibc-all-in-one:完整安装与使用指南 【免费下载链接】glibc-all-in-one 🎁A convenient glibc binary and debug file downloader and source code auto builder 项目地址: https://gitcode.com/gh_mirrors/gl/glibc-all-in-one gl…

作者头像 李华