Linux 容器到底是什么?

Linux 容器到底是什么?

我已经阅读了很多关于 Linux 容器的文档。我也尝试了CentOS 方式Ubuntu 方式

维基百科说

它是一个操作系统级别的虚拟化。

Linuxcontainers.org 说

LXC 是 Linux 内核包含功能的用户空间接口。

我没法弄清楚。

  1. LXC 只是一个用户界面,还有一些其他内核模块提供容器功能。
  2. 或者 LXC 是在软件包安装时修补到内核的东西,它还提供用户空间实用程序。
  3. 在 CentOS 上尝试时,lxc虽然安装包在存储库中可用,但不需要它。
  4. 在 CentOS 上,无需安装lxclibvirt 守护进程,即可lxc:/// 使用 libvirt 命令实用程序进行连接。那么内核中是否已经有 lxc 模块?但我没有找到任何模块lsmod
  5. 但是,内核中哪个模块提供容器化?

答案1

这是一个令人困惑的话题,因为不是“提供容器化”。容器是一个通用概念实施的在 Linux 内核中使用命名空间进行进程隔离、使用 cgroup 进行资源管理,以及可能更多(如使用 SELinux 进行安全保护)来实现。

lxc工具是实现这一点的一个可能的界面 —— 您可以将其视为前端,尽管将其视为“前端加胶水”可能更好。libvirt-lxc是一个名称相似但完全不同的工具,并且systemd-nspawn完后还有。

Linux 容器热门话题 Docker 是一层用户界面和粘合剂,但它实际上可以位于其他几个后端之上,包括上述任何一个——参见这篇关于 Docker 0.9 的博客文章稍旧,特别是图表解释库容器

Dan Walsh 在 Usenix '13 上就此发表了演讲,可能会有所帮助:https://www.usenix.org/conference/lisa13/secure-linux-containers(免责声明:Dan 是我在 Red Hat 的同事。)

答案2

  1. 是也不是。LXC 只是一个用户界面,但不是针对模块,而是针对一些内核功能。主要是进程、用户、网络、挂载、uts 和 ipcs 命名空间,以及 cgroup 和其他内容。

  2. 不。

  3. 正确,您可以使用其他管理工具使用相同的内核功能或原理。

  4. 正如我在第一条消息中所说,它使用 Linux 内核内置的特定功能,不需要任何模块。

  5. 无。好吧,在构建内核时需要启用某些功能,但它们并非真正的模块。CentOS(基于 RHEL 构建)在其内核配置中拥有这些功能。

相关内容