LXC(Linux Containers,Linux 容器)是 Linux 内核容器化功能的用户空间接口。通过强大的 API 和简单的工具,它使 Linux 用户能够轻松创建和管理系统级或应用级容器。
特性
当前版本的 LXC 利用以下内核特性来实现进程隔离:
- 内核命名空间(Kernel namespaces):包括 IPC、UTS、Mount、PID、Network 和 User 命名空间
- AppArmor 与 SELinux 安全配置文件
- Seccomp 策略
- Chroot 环境(通过
pivot_root实现) - 内核能力(Kernel capabilities)
- 控制组(CGroups, Control Groups)
LXC 容器通常被认为是介于 chroot 和 完整虚拟机 之间的一种轻量级虚拟化技术。LXC 的目标是创建一个尽可能接近标准 Linux 安装的环境,但无需运行独立的内核。
组件
目前,LXC 由以下几个独立组件构成:
- liblxc 库:核心库,提供容器管理功能
- 多种语言的 API 绑定:
- Python 3
- Lua
- Go
- Ruby
- Haskell
- 一组标准工具:用于控制和管理容器
- 发行版容器模板:用于快速创建基于不同 Linux 发行版的容器
许可证
LXC 是自由软件,其大部分代码采用 GNU LGPLv2.1+ 许可证发布。
部分用于 Android 兼容性的代码采用标准的 二条款 BSD 许可证,
而某些二进制程序和模板则采用 GNU GPLv2 许可证。
该项目的默认许可证为 GNU LGPLv2.1+。
支持
LXC 稳定版本的支持主要依赖于各 Linux 发行版及其对推送稳定修复和安全更新的承诺。
根据各发行版的实际需求和可用资源,特定版本的 LXC 可获得长期支持(LTS),并定期接收错误修复更新。
其他版本通常以“尽力而为”(best effort)的方式维护,一般意味着维护周期持续到下一个稳定版本发布为止。