Red Hat/CentOS EL6 上的 Linux 容器 (LXC) - lxc-create 与 libvirt?

eww*_*ite 13 redhat centos libvirt containers lxc

试图保持在红帽的青睐范围内并仍然计划系统寿命是很棘手的......

一年多来,我一直是Linux Containers (LXC)的支持者。我的初始安装基于从在线教程中收集的信息,例如this onethis one。这个中心的周围lxc-createlxc-start|stop并且lxc-destroy命令和修改现有OpenVZ的模板

这运行良好,并在生产中愉快地运行。但是,我提出了一些额外的系统,并决定查看 Red Hat 当前有关 EL6 容器的文档。看到他们在这方面的官方立场,我感到很惊讶。

RHEL 6 是否提供使用 Linux 容器所需的 LXC 工具?,Red Hat 将 LXC 描述为技术预览建议使用 libvirt 来管理创建和管理容器

然而,Oracle在其 Unbreakable Linux 中提倡一种完全不同的容器化技术

libvirt 方法中似乎缺少一些功能,但是我最初使用 lxc-* 命令的方法有点像手动过程……我不太清楚在 EL6 上管理容器的方法或“可接受”方法.

  • 今天关于 LXC 和 RHEL 类系统的传统智慧是什么?
  • 如何在您的组织中实施它们?
  • 一种方法与其他方法相比有什么优势吗?
  • 这些可以共存吗?

sci*_*rus 9

红帽正在一个巨大的集装箱推。他们正在围绕它构建一个全新的产品Red Hat Enterprise Linux Atomic Host

对于不太激进的方法,请查看他们的 RHEL7 beta资源管理和 Linux 容器指南;你会注意到它推送了 libvirt-lxc 并且没有提到 lxc 工具。


Mat*_*Ife 7

今天关于 LXC 和 RHEL 类系统的传统智慧是什么?

就个人而言,我发现当前的设置有些欠缺。LXC 似乎更处于最前沿——当然更容易维护。

你是如何实施它们的?

就将其作为虚拟化选项提供而言,我不是。我发现目前的技术设置缺乏。

  • 没有用户名命名空间。
  • 某些挂载点不知道命名空间(cgroups、selinux)
  • /proc 中的值是误导性的系统全局变量,不考虑命名空间中的资源分区。
  • 中断审计。

但是,我确实发现它非常适合应用程序级别的遏制。我们直接使用命名空间和 cgroups 来包含某些用户运行的 Web 应用程序的网络和 IPC 资源。我们提供自己的界面来控制它。在 RHEL7 中,我正在考虑将此功能移至支持用户 ACL 概念libvirt-lxc的较新版本libvirt

对于完全初始化系统方面的虚拟化,我正在等待 RHEL7 中提供的内容,但老实说,我觉得我们可能只会在 RHEL7 的后续次要版本上看到一个足够好的解决方案,然后也许仅处于技术预览状态。

请留意systemd-nspawn在接下来的 18 个月左右告诉我的一些事情,它可能会取代它是实现完全包含 linux 的虚拟化的最佳工具,无论 systemd 的作者是否明确表示它现在不安全!如果最终libvirt下降libvirt-lxc并且只提供一个systemd-nspawn定义了 systemd 切片的包装器,我不会感到惊讶。

另外,请注意在过去 6 个月里有很多关于将 cgroups 重新实现为内核程序员接口而不是文件系统接口的讨论(可能使用 netlink 或其他东西,尚未检查)所以 systemd 应该非常热门很快就可以做到这一点。

一种方法与另一种方法相比有什么优势吗?

我认为 LXC 选项(不是 libvirt-lxc)维护得更好。看了libvirt-lxc源码,感觉很仓促。传统的 LXC 当然具有经过更好测试的更新功能。两者都需要在其中运行的 init 系统具有一定程度的兼容性,但我怀疑您会发现 LXC 比libvirt-lxc选项更“交钥匙”,特别是在让发行版在其中运行方面。

这些可以共存吗?

当然,请记住,出于所有意图和目的,两者都在做同样的事情。组织命名空间、cgroup 和挂载点。所有原语都由内核本身处理。这两种lxc实现都只是提供了一种与可用内核选项交互的机制。