什么是Linux容器毕竟?

我一直在阅读Linux容器上的许多文档。 我也尝试了CentOS的方式和Ubuntu的方式 。

维基百科说

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

Linuxcontainers.org说

LXC是Linux内核遏制function的用户空间界面。

我无法弄清楚。

  1. LXC只是一个用户界面,还有一些其他的内核模块提供了容器function。
  2. 或者是LXC在安装软件包时被修补到内核的东西,它还提供用户空间实用程序。
  3. 在CentOS上试用时,安装lxc软件包并不是必需的,尽pipe它在存储库中是可用的。
  4. 在CentOS上,不安装lxc ,libvirt守护进程可以使用libvirt命令utilies连接到lxc:/// 。 那么内核中是否有一个lxc模块? 但我没有find任何与lsmod
  5. 但是,它是内核中的模块,提供集装箱化?

这是一个令人困惑的话题,因为没有一个“提供集装箱化”的东西。 容器是在Linux内核中实现的一个通用概念,通过使用名称空间进行进程隔离,使用cgroups进行资源pipe理,还可能使用更多的SELinux来实现安全性。

lxc工具是一个可能的接口 – 你可以把它看作是一个前端,虽然它可能会更好地被认为是“前端加胶水”。 libvirt-lxc是一个类似命名但完全不同的工具,而systemd-nspawn是另外一个。

而linux容器热门话题Docker 也是一层用户界面和粘合剂,但它实际上可以位于其他几个后端之上,包括以上任何一个 – 请参阅这篇稍微过时的关于Docker 0.9的博客文章 ,尤其是graphics解释libcontainer

Dan Walsh在Usenix '13上做了一个演讲,这可能会有所帮助: https : //www.usenix.org/conference/lisa13/secure-linux-containers (声明:Dan是Red Hat的同事。 )

  1. 是和不是。 LXC只是一个用户界面,但不是一个模块,而是一些内核function。 主要是进程,用户,networking,挂载,uts和ipcs命名空间,以及cgroup和其他东西。

  2. 没有。

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

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

  5. 没有。 那么,构build内核时需要启用某些function,但它们不完全是模块。 CentOS(由RHEL构build),在内核configuration中有。