为什么 systemd-nspawn 不适合生产部署?

Chr*_*dez 8 linux systemd container containers

在阅读 systemd-nspawn 时,提到它不应该在生产环境中使用。原因似乎是缺乏管理和部署基础设施。实用性是唯一的原因,还是也有潜在的安全/功能原因?

isa*_*pir 5

Lennart Poettering 在 2013 年的一次演讲中提到了这一点,但在 2015 年他被引述如下:

systemd 还包含 systemd-nspawn 容器管理器。它是容器管理器的一个相对最小但功能强大的实现。最初我们编写它是为了测试目的,但现在我们认为它已准备好用于许多生产用途。事实上,CoreOS 的 rkt 容器工具将其用作较低级别的容器后端。

参考:systemd 和容器相遇的地方:与 Lennart Poettering 的问答


sou*_*edi 3

您的来源描述了 systemd 开发人员 Lennart Poettering 的演示。Lennart 是红帽公司的员工。Red Hat Enterprise Linux 和 Fedora Linux 社区发行版都使用 SELinux。

systemd-nspawn 和 SELinux 之间的集成似乎被破坏,例如参见rhbz1416540。此外,如果您尝试从 Fedora Linux 上的专用网络命名空间中启动的容器访问网络(使用时的默认设置systemd-nspawn@.service),它将被 firewalld 阻止

我的结论是 systemd-nspawn 不支持将容器作为服务器运行。它可能恰好在非 Red Hat 系统上运行,但您不会受益于任何基于LSM 的保护。除非你自己能解决一些问题。

请注意,其他著名的容器管理器包括基于 LSM 的保护。特别是 Docker,但 LXC 还包含一些针对 AppArmor 的策略。

生产就绪意味着人们正在审核、记录甚至营销如何安全地使用 systemd-nspawn。我认为 systemd 开发人员诚实地承认他们并没有真正这样做,至少目前是这样。