我最终会从 FreeBSD/Freenas 迁移到 Debian/Freenas Scale,但问题更广泛。Linux 操作系统上的 jails 的等价物是什么?
现在大多数人会推荐 docker 或它的一些变体。我同意,但我真的非常喜欢 jails 的工作方式,我可以进入 shell 并更改/安装我需要的东西。问题是(据我所知)不可能像 jail 那样使用 docker,所以它必须预先配置好等等。它不适合我。
那么下一个选项是 VM,我想这会起作用,但是为每个应用程序创建 vm 感觉过于复杂,此外它不会浪费资源吗?
因此,我正在寻找建议,用什么来替换我当前的监狱,以保留其现在所具有的尽可能多的功能。
答案1
如果由于设计原因您需要使用某个操作系统,则需要将工具移植到该系统。
我们不提供产品推荐,因此您需要寻找或创建容器管理工具。在实施细节上,Jails 与 Linux 容器肯定不同。但是,容器技术的比较会显示它们在高水平上是相似的。
FreeBSD 监狱chroot 增强了与其他资源的隔离。另外还有用于管理生命周期、从媒体安装、启动、停止的工具。
Linux 的类似隔离机制是命名空间。网络、用户、挂载、IPC、uname。大多数基于这些构建的容器工具(有多种选择)都强加了自己对一切应如何运作的想法;Docker 不仅仅是一个 chroot。您可能不喜欢 Docker 处理图像或网络的方式。
然而,不使用容器也可以使用 Linux 命名空间。维基百科关于命名空间的页面有一个有趣的想法,为 chroots 添加进程隔离:
SHELL=/bin/sh unshare --fork --pid chroot "${chrootdir}" "$@"
不包括创建此 chroot 并向其中安装东西的步骤。
答案2
您可能想要更详细地解释一下您喜欢 jail 中的哪些功能,而容器中缺少哪些功能。我个人运行 LXC 容器,它们有自己的个性(debian 或 debian 主机上的 ubuntu)。我可以在它们中使用 SSH,由于网络命名空间,它们有自己的 IP 堆栈,与主机 IP 堆栈隔离,并且由于进程命名空间,我可以在其中安装和运行它们自己的一组应用程序,而无需与主机应用程序进行交互。