在阅读有关 systemd-nspawn 的内容时,有人提到它不应该在生产环境中使用。原因似乎是缺乏管理和部署基础设施。实用性是唯一的原因,还是还有潜在的安全/功能原因?
答案1
Lennart Poettering 在 2013 年的一次演讲中提到了这一点,但在 2015 年,有人引用他的话:
systemd 还包含 systemd-nspawn 容器管理器。这是容器管理器的一个相对最小但功能强大的实现。最初我们编写它是为了测试目的,但是如今,我们认为它可以用于多种生产用途。事实上,CoreOS 的 rkt 容器工具将其用作较低级别的容器后端。
答案2
您的来源描述了 systemd 开发人员 Lennart Poettering 的演示。 Lennart 是红帽公司的员工。 Red Hat Enterprise Linux 和 Fedora Linux 社区发行版都使用 SELinux。
systemd-nspawn 和 SELinux 之间的集成似乎被破坏,例如参见rhbz1416540。另外,如果您尝试从 Fedora Linux 上的专用网络命名空间中启动的容器访问网络(使用时的默认设置[email protected]
),它将是被firewalld阻止。
我的结论是 systemd-nspawn 不支持将容器作为服务器运行。它可能恰好在非 Red Hat 系统上运行,但您不会受益于任何LSM基于的保护。除非你自己能解决一些问题。
请注意,其他著名的容器管理器包括基于 LSM 的保护。特别是 Docker,但 LXC 还包含一些针对 AppArmor 的策略。
生产就绪意味着人们正在审核、记录甚至营销如何安全地使用 systemd-nspawn。我认为 systemd 开发人员诚实地承认他们并没有真正这样做,至少目前是这样。