FreeBSD Jails 或 Docker 实例

Sim*_*mba 19 freebsd jail docker

FreeBSD 上的 jails 和 Linux 上的 Docker 之间的主要区别是什么?一个比另一个更安全或更高效吗?Jails 比 Docker 实例更古老,因此可以认为代码本身更安全。但是 Jails 永远不会“流行起来”,所以也许它们不如 Docker 实例好?或者仅仅是因为 Linux 比 FreeBSD 更受欢迎?

dro*_*kie 29

我将讨论 FreeBSD jails 和 Linux Docker 的一些方面,以及它们的相似之处和不同之处。

  • 两者都有相同的目标:它是轻量级虚拟化的实现,当您在同一内核下的分离和隔离的隔间中运行应用程序时,相似之处结束,差异开始
  • Docker 是一种工具,主要用于运行可以从各种公共或私有存储库中获取的准备好的二进制映像。大多数人以这种方式使用它。更少的人构建自己的,然后上传到这些存储库中。
  • FreeBSD jails 更像是 Linux 中的 LXC:它是一种从头开始创建容器的方法。您创建它,将软件安装到其中,这几乎就是全部 - 它可以被视为 FreeBSD 中的 FreeBSD。没有简单的方法可以将该容器导出为单个软件,就像在 Docker 中一样。所以几乎所有使用 FreeBSD 的人,相反,总是从头开始(即从安装的基本系统)在容器中构建他们自己的 FreeBSD,从 FreeBSD Ports 系统或源代码安装软件。因此,FreeBSD jails 不太友好,并且具有更高的启动使用成本。
  • 就像 LXC 容器是持久的一样,FreeBSD jail 也是持久的。靴子之间的所有变化都保持不变。正如我所说,它只是同一操作系统中的一个操作系统(尽管在 FreeBSD 内核中维护 ABI 之前,用户空间软件版本可能会有所不同)。这意味着您无法提交更改 - 一旦创建它们就会提交
  • 综上所述,很明显为什么 FreeBSD 容器不能有类似的编排层,就像 Docker 那样:没有端口发布,没有卷,没有链接或不同监狱之间的任何元连接。只有网络操作系统为您提供的接口:网络套接字、unix 套接字、常见的挂载点。
  • 当然,在 FreeBSD jail 中谁可以与谁通信是没有限制的,因为在 Docker 中没有限制。
  • 你可以在 FreeBSD 中运行原生 docker 镜像,因为在 FreeBSD 下至少有部分 docker 支持,但是,由于 Linux 是免费的,我强烈建议不要使用它(我真的很喜欢 FreeBSD),因为它们将通过 Linux 兼容性运行层(随 FreeBSD 内核模块提供),它提供了一些已知的限制。