Apptainer简介(appcontainer)

Apptainer简介(appcontainer)

Apptainer 是一个容器平台。 它允许您创建和运行容器,以可移植和可复制的方式打包软件。 您可以在笔记本电脑上使用 Apptainer 构建容器,然后在世界上许多最大的 HPC 集群、本地大学或公司集群、单个服务器、云中或大厅的工作站上运行它。 您的容器是单个文件,您不必担心如何在每个不同的操作系统上安装所需的所有软件。

为什么要使用 Apptainer?

Apptainer 旨在以简单、可移植且可重复的方式在 HPC 集群上运行复杂的应用程序。 它首先由劳伦斯伯克利国家实验室开发,很快在其他 HPC 站点、学术站点等中流行起来。 Apptainer 是一个开源项目,拥有一个友好的开发人员和用户社区。 用户群不断扩大,Apptainer 现在在工业界和学术界的许多工作领域得到使用。

有许多容器平台可用,但 Apptainer 专注于:

  • 使用加密签名、不可变的容器映像格式和内存中解密来验证可重复性和安全性。

默认情况下,集成优于隔离。 默认情况下,轻松利用集群或服务器上的 GPU、高速网络、并行文件系统。

  • 计算的移动性。 单文件 SIF 容器格式易于传输和共享。
  • 简单、有效的安全模型。 您在容器内部与容器外部是同一用户,并且默认情况下无法在主机系统上获得额外的权限。 阅读有关 Apptainer 中安全性的更多信息。

为什么要使用容器?

Unix 操作系统分为两个主要组件:内核空间和用户空间。 内核与硬件对话,并提供核心系统功能。 用户空间是大多数人最熟悉的环境。 它是应用程序、库和系统服务运行的地方。

传统上,您使用的操作系统具有固定的内核和用户空间组合。 如果您有权访问运行 CentOS 的计算机,则无法在其上安装为 Ubuntu 打包的软件,因为这些发行版的用户空间不兼容。 安装同一软件的多个版本也可能非常困难,这可能需要随着时间的推移支持不同工作流程中的可重复性。

容器将用户空间更改为可交换组件。 这意味着 Linux 操作系统的整个用户空间部分(包括程序、自定义配置和环境)可以独立于您的系统是否运行 CentOS、Fedora 等。 Apptainer 容器将您需要的任何内容打包到一个可验证的文件中。

软件开发人员现在可以将其堆栈构建到最适合其需求的任何操作系统基础上,并创建可分发的运行时环境,以便用户永远不必担心他们的系统可能无法满足的依赖性和要求。

使用场景

Apptainer 可以适用于以下几种场景:

  • BYOE(Bring Your Own Environment):自带环境!

研究计算的工程工作流程可能是一个复杂且迭代的过程,在共享且有些不灵活的生产环境中更是如此。 Apptainer 通过使环境变得灵活来解决这个问题。

此外,学校通常(尤其是在教育领域)向学生提供标准化的预配置 Linux 发行版,其中包括所有必要的工具、程序和配置,以便他们可以立即跟进。

  • 可重复的科学

Apptainer 容器可以构建为包含所有程序、库、数据和脚本,以便可以包含整个演示并存档或分发以供其他人复制,无论他们当前运行什么版本的 Linux。

  • 需要特定环境的商业支持代码

一些商业应用程序仅经过认证可以在特定版本的 Linux 上运行。 如果该应用程序安装到运行经过认证的 Linux 版本的 Apptainer 容器中,则该容器可以在任何 Linux 主机上运行。 应用程序环境、库和经过认证的堆栈都将继续按照预期运行。

此外,Apptainer 模糊了容器和主机之间的界限,以便您的主目录(和其他目录)存在于容器中。 容器内的应用程序可以完全且直接地访问您拥有的所有文件,因此您可以轻松地将所包含的商业应用程序合并到主机上的工作和流程中。

  • 静态环境(软件设备)

资助一次,永不更新软件开发模式。 虽然这并不理想,但这是研究资助的常见情况。 为初始开发提供一定数量的资金,一旦完成,实习生、研究生、博士后或开发人员就会被重新分配到其他项目。 这使得软件堆栈无法维护,甚至更新的编译器或 Linux 发行版的重建也无法在没有资金支持的情况下完成。

  • 旧操作系统上的遗留代码

与上面的例子类似,虽然这不太理想,但这是研究生态系统的事实。 举个例子,我知道一个 Linux 发行版已经停产 15 年了,但由于专门为此环境构建的软件堆栈,该发行版仍在生产中。 Apptainer 在当前操作系统和硬件上运行该操作系统和应用程序堆栈没有问题。

  • 非常特定于主机的复杂软件堆栈

有各种非常复杂的软件包,需要花费很多精力才能移植、更新和限定新的操作系统或编译器。 大气和天气应用就是一个很好的例子。 将它们移植到一个封闭的操作系统将大大延长开发工作的有效性。

  • 需要自定义安装和/或数据的复杂工作流程

将工作流程整合到 Apptainer 容器中可以简化科学结果的分发和复制。 将容器与已发表的作品一起使用,使其他科学家能够以(并验证)以前的科学工作为基础。

Apptainer简介(appcontainer)

相关新闻

联系我们
联系我们
在线咨询
分享本页
返回顶部