Apptainer簡介(appcontainer)
Apptainer 是一個容器平臺。 它允許您創(chuàng)建和運行容器,以可移植和可復制的方式打包軟件。 您可以在筆記本電腦上使用 Apptainer 構建容器,然后在世界上許多最大的 HPC 集群、本地大學或公司集群、單個服務器、云中或大廳的工作站上運行它。 您的容器是單個文件,您不必擔心如何在每個不同的操作系統(tǒng)上安裝所需的所有軟件。
為什么要使用 Apptainer?
Apptainer 旨在以簡單、可移植且可重復的方式在 HPC 集群上運行復雜的應用程序。 它首先由勞倫斯伯克利國家實驗室開發(fā),很快在其他 HPC 站點、學術站點等中流行起來。 Apptainer 是一個開源項目,擁有一個友好的開發(fā)人員和用戶社區(qū)。 用戶群不斷擴大,Apptainer 現(xiàn)在在工業(yè)界和學術界的許多工作領域得到使用。
有許多容器平臺可用,但 Apptainer 專注于:
- 使用加密簽名、不可變的容器映像格式和內存中解密來驗證可重復性和安全性。
默認情況下,集成優(yōu)于隔離。 默認情況下,輕松利用集群或服務器上的 GPU、高速網絡、并行文件系統(tǒng)。
- 計算的移動性。 單文件 SIF 容器格式易于傳輸和共享。
- 簡單、有效的安全模型。 您在容器內部與容器外部是同一用戶,并且默認情況下無法在主機系統(tǒng)上獲得額外的權限。 閱讀有關 Apptainer 中安全性的更多信息。
為什么要使用容器?
Unix 操作系統(tǒng)分為兩個主要組件:內核空間和用戶空間。 內核與硬件對話,并提供核心系統(tǒng)功能。 用戶空間是大多數(shù)人最熟悉的環(huán)境。 它是應用程序、庫和系統(tǒng)服務運行的地方。
傳統(tǒng)上,您使用的操作系統(tǒng)具有固定的內核和用戶空間組合。 如果您有權訪問運行 CentOS 的計算機,則無法在其上安裝為 Ubuntu 打包的軟件,因為這些發(fā)行版的用戶空間不兼容。 安裝同一軟件的多個版本也可能非常困難,這可能需要隨著時間的推移支持不同工作流程中的可重復性。
容器將用戶空間更改為可交換組件。 這意味著 Linux 操作系統(tǒng)的整個用戶空間部分(包括程序、自定義配置和環(huán)境)可以獨立于您的系統(tǒng)是否運行 CentOS、Fedora 等。 Apptainer 容器將您需要的任何內容打包到一個可驗證的文件中。
軟件開發(fā)人員現(xiàn)在可以將其堆棧構建到最適合其需求的任何操作系統(tǒng)基礎上,并創(chuàng)建可分發(fā)的運行時環(huán)境,以便用戶永遠不必擔心他們的系統(tǒng)可能無法滿足的依賴性和要求。
使用場景
Apptainer 可以適用于以下幾種場景:
- BYOE(Bring Your Own Environment):自帶環(huán)境!
研究計算的工程工作流程可能是一個復雜且迭代的過程,在共享且有些不靈活的生產環(huán)境中更是如此。 Apptainer 通過使環(huán)境變得靈活來解決這個問題。
此外,學校通常(尤其是在教育領域)向學生提供標準化的預配置 Linux 發(fā)行版,其中包括所有必要的工具、程序和配置,以便他們可以立即跟進。
- 可重復的科學
Apptainer 容器可以構建為包含所有程序、庫、數(shù)據(jù)和腳本,以便可以包含整個演示并存檔或分發(fā)以供其他人復制,無論他們當前運行什么版本的 Linux。
- 需要特定環(huán)境的商業(yè)支持代碼
一些商業(yè)應用程序僅經過認證可以在特定版本的 Linux 上運行。 如果該應用程序安裝到運行經過認證的 Linux 版本的 Apptainer 容器中,則該容器可以在任何 Linux 主機上運行。 應用程序環(huán)境、庫和經過認證的堆棧都將繼續(xù)按照預期運行。
此外,Apptainer 模糊了容器和主機之間的界限,以便您的主目錄(和其他目錄)存在于容器中。 容器內的應用程序可以完全且直接地訪問您擁有的所有文件,因此您可以輕松地將所包含的商業(yè)應用程序合并到主機上的工作和流程中。
- 靜態(tài)環(huán)境(軟件設備)
資助一次,永不更新軟件開發(fā)模式。 雖然這并不理想,但這是研究資助的常見情況。 為初始開發(fā)提供一定數(shù)量的資金,一旦完成,實習生、研究生、博士后或開發(fā)人員就會被重新分配到其他項目。 這使得軟件堆棧無法維護,甚至更新的編譯器或 Linux 發(fā)行版的重建也無法在沒有資金支持的情況下完成。
- 舊操作系統(tǒng)上的遺留代碼
與上面的例子類似,雖然這不太理想,但這是研究生態(tài)系統(tǒng)的事實。 舉個例子,我知道一個 Linux 發(fā)行版已經停產 15 年了,但由于專門為此環(huán)境構建的軟件堆棧,該發(fā)行版仍在生產中。 Apptainer 在當前操作系統(tǒng)和硬件上運行該操作系統(tǒng)和應用程序堆棧沒有問題。
- 非常特定于主機的復雜軟件堆棧
有各種非常復雜的軟件包,需要花費很多精力才能移植、更新和限定新的操作系統(tǒng)或編譯器。 大氣和天氣應用就是一個很好的例子。 將它們移植到一個封閉的操作系統(tǒng)將大大延長開發(fā)工作的有效性。
- 需要自定義安裝和/或數(shù)據(jù)的復雜工作流程
將工作流程整合到 Apptainer 容器中可以簡化科學結果的分發(fā)和復制。 將容器與已發(fā)表的作品一起使用,使其他科學家能夠以(并驗證)以前的科學工作為基礎。