在基于 UNIX 的操作系统上安装不同的应用程序时,哪组系统范围的配置设置可能会发生冲突?

在基于 UNIX 的操作系统上安装不同的应用程序时,哪组系统范围的配置设置可能会发生冲突?

读这篇文章集装箱化报告作者提到:

Unix 的共享全局文件系统引起的一个问题是缺乏配置隔离。多个应用程序对系统范围的配置设置可能有冲突的要求。

我知道安装不同的应用程序进行开发,通常不同的应用程序需要相同库的不同版本,或者模糊地,它们需要不同的系统范围配置值。我不清楚这个集合在基于 UNIX 的操作系统上是什么。

哪些配置值通常会导致此问题?

天真地说,为什么一旦最终用户部署或安装了应用程序,这就不那么是一个问题了?为什么我不能让类似应用程序的开发版本轻松地并行运行,但我可以使用包管理器下载并让它们运行而几乎没有问题或没有问题?

答案1

是的,虽然有些东西可以使用环境变量单独配置。如果程序对文件位置进行了硬编码,则可能会发生冲突。

解决方案是命名空间。命名空间有多种类型:文件系统、进程、用户、网络……

在您提到(文件系统)的情况下,名称空间可以向不同名称空间中的进程呈现完全不同的文件系统视图。通常,主机中的子目录将成为新命名空间的根。

它帮助管理命名空间、cgroup 等,我们可以使用容器化工具。他们只是为我们管理这些内核服务,但让事情变得更容易。

容器中运行的任何进程都会看到一个(通常)只有几个进程在其上运行的系统。它将看到文件系统的子集。它将看到自己的网络配置。它将看到系统资源的子集(CPU、内存等)。

相关内容