文章目录
Linux 容器
Linux 容器(Linux Containers, LXC)是一种轻量级的虚拟化技术,通过使用 Linux 内核功能(如命名空间和控制组)实现应用程序的隔离、资源控制和高效运行。与传统虚拟机相比,容器不需要虚拟化整个操作系统,因而具有更高的性能和更低的资源开销。
Linux 容器的核心原理
Linux 容器的实现依赖以下几个关键技术:
1. Namespace(命名空间)
- 命名空间提供了进程级别的隔离,容器中的进程认为自己运行在独立的环境中。
- 主要命名空间:
- PID(进程 ID)命名空间:
- 隔离进程 ID,容器内的进程只能看到自身的 PID。
- NET(网络)命名空间:
- 每个容器拥有独立的网络栈,包括接口、IP 地址、路由表等。
- IPC(进程间通信)命名空间:
- 隔离 System V IPC 和 POSIX 消息队列。
- UTS(主机名和域名)命名空间:
- 容器可以设置自己的主机名和域名。
- MNT(挂载点)命名空间:
- 隔离文件系统的挂载点,容器可以有自己的文件系统视图。
- USER(用户)命名空间:
- 提供用户 ID 和组 ID 的隔离。
- PID(进程 ID)命名空间:
2. Cgroups(控制组)
- Cgroups 用于限制、记录和隔离容器对系统资源的使用。
- 主要控制资源:
- CPU:限制 CPU 时间的使用。
- 内存:设置内存使用上限,防止内存溢出。
- 磁盘 I/O:控制容器的磁盘读写速率。
- 网络带宽:限制容器的网络使用。