每个用例隔离操作系统和包的最佳实践

每个用例隔离操作系统和包的最佳实践

我想要以下设置(Ubuntu、CentOS,但愿意使用任何现代发行版)

  • 操作系统是自包含的(操作系统就是操作系统,而不是操作系统+DB+Apache+etc+数百个库的混乱,只有一个应用程序使用)
  • 用例 A 的文件完全分离(例如 IntelliJ 和其他软件包安装在 /opt 中)
  • 用例 B 的文件完全分离(例如 /opt 中的数据库服务器和支持包)
  • 用例 C、D、...

这个想法是

  • 我可以更换/升级操作系统版本,而不会对其他一切产生任何副作用
  • 应用程序安装在 /opt 中,不会对操作系统产生任何副作用,例如,我在 /opt 中运行一个脚本来调整 PATH 和其他设置。
  • 我可以(专门)将案例 A 文件挂载到 /opt/work 并执行 Java 工作
  • 我可以(专门)将 case B 文件挂载到 /opt/work 并执行 SQL 工作

请注意,apt/yum 只是将操作系统安装与实际上不应与操作系统一起安装的文件搞乱了(例如,因为我需要使用不同版本的库)。此外,/etc 中的文件也被更改。

像 snap 这样的解决方案在包级别工作,因此 PATH 变得相当大,并且文件查找和启动时间更长。而且,snap 包很多时候来源不明/打包者不明,质量和安全性值得怀疑(PPA 就是安全之死)。这个想法很好(对于每个用例都有一个单独的路径并具有 ${BASE_PATH}/{bin,lib,etc} 。

总体目标是:

  • 对操作系统的完全控制(安全、审计、自动升级和版本控制,无需人工干预)
  • 完全控制开发环境(版本控制、升级、离线包安装等)
  • 但可以完全访问 Wayland 和 GUI 以及其他本机加速功能。

我知道我可以在 Docker 中运行应用程序,但 GUI 访问需要 root,这是我不喜欢的。我对 Podman 对于 rootless X 没有太多经验。我也可以启动 VM,但这需要具有适当支持的处理器,例如,大多数 EC2 实例不支持在 VM 内运行 VM。不过,这个问题并不是 EC2 特有的。

答案1

我建议使用考虑到这些使用模式而设计的发行版,例如银蓝软呢帽。您可以将基本操作系统保留为只读系统,必要时“集体”升级,并在沙盒环境中运行所有服务和应用程序(但可以完全访问显示服务器)。

答案2

CentOS 或 Fedora - 我会安装 podman:

sudo yum -y install podman

https://podman.io/getting-started/

波德曼是什么? Podman 是一个无守护程序容器引擎,用于在 Linux 系统上开发、管理和运行 OCI 容器。容器可以以 root 身份运行,也可以以无 root 模式运行。简单来说:alias docker=podman。更多详细信息请参见此处。

https://podman.io/

相关内容