cgroup netns mountns随记

Cgroup

Cgroup 即 Control Group,是一种 Linux 内核机制,它允许对进程进行资源控制和管理。Cgroup 可以限制进程的 CPU 使用率、内存使用量、磁盘 I/O 等资源。

Cgroup 主要作用:

  1. 资源控制: 可以限制进程的资源使用量,防止单个进程占用过多资源导致系统资源枯竭
  2. 资源隔离: 可以将不同类型的进程隔离到不同的 cgroup 中,以便更好地管理资源
  3. 资源统计: 可以收集 cgroup 中进程的资源使用情况统计数据,用于分析和优化资源分配

Netns

Netns 即 Network Namespace,是一种 Linux 内核机制,它允许在不同的进程之间隔离网络资源。这意味着每个 Network Namespace 都有自己的独立网络配置,例如 IP 地址、端口号和路由表。

Netns 主要作用:

  1. 隔离不同用户的网络连接
  2. 隔离不同应用程序的网络连接
  3. 创建虚拟网络

Mountns

Mountns 即 Mount namespace,是一种 Linux 内核机制,它允许在不同的进程之间隔离挂载点。这意味着每个 mount namespace 都有自己的独立挂载视图,即使它们位于同一个物理主机上。

Mountns 主要作用:

  1. 隔离不同用户的挂载点
  2. 隔离不同应用程序的挂载点
  3. 创建沙箱环境

总结

Cgroup、Netns、Mountns 都是 Linux 内核机制,用于处理不同类型资源的隔离。

  1. Cgroup 可以限制进程的 CPU/内存/磁盘IO
  2. Netns 可以隔离进程的网络连接
  3. Mountns 可以隔离进程的挂载点

容器网络实现

容器的网络是基于 linux 的网络命名空间(networke namespace)虚拟网络设备(veth pair)实现的。