什麼是 Apptainer?如何在 Ubuntu 服務器上安裝?
Apptainer/Singularity 包已成爲高性能計算(HPC)中使用最廣泛的容器部署系統之一。該容器系統旨在以裸金屬性能執行應用程序,同時保持高度的安全性、可移植性和再現性。
Apptainer 是一個開源項目,社區不斷壯大,用戶基礎不斷擴大。功能集如下所示:
——支持信任的公鑰 / 私鑰簽名。
——與 Docker 和開放式容器倡議的兼容性。
——加密。
——可移植性。
——容器無根運行以禁止權限提升。
——利用 GPU、FPGA、高速網絡和文件系統。
——易於使用。
——提供商業支持。
雖然 Apptainer 的安裝遠不如 Docker 那麼容易,但如果你想在容器中尋找更高的安全性,這可能就是你想要的部署系統。
以下是其安裝過程。
要求
Apptainer 可以安裝在 RHEL 和基於 Ubuntu 的 Linux 發行版上。筆者將用 Ubuntu server 22.04 進行演示,因此你需要一個該操作系統的運行實例和一個具有 sudo 權限的用戶。
安裝必要的依賴關係
首先要做的是安裝必要的依賴關係。登錄到 Ubuntu 實例併發出命令:
sudo apt-get install-y\
build-essential\
libseccomp-dev\
pkg-config\
uidmap\
squashfs-tools\
squashfuse\
fuse2fs\
fuse-overlayfs\
fakeroot\
cryptsetup\
curl wget git
對於那些可能不熟悉 Linux 的人來說,上面是一個使用 \ 字符分成步驟的命令。該命令的單行版本如下:
sudo apt-get install build-essential libseccomp-dev pkg-config uidmap squashfs-tools\n
squashfuse fuse2fs fuse-overlayfs fakeroot cryptsetup curl wget git-y
請注意,如果你使用的是基於 RHEL 的發行版,依賴關係的安裝會稍微複雜一些。首先,必須使用以下工具安裝開發工具:
sudo yum groupinstall -y 'Development Tools'
接下來,添加 EPEL 存儲庫:
sudo yum install -y epel-release
最後,你可以使用以下組件安裝依賴關係:
sudo yum install-y\
libseccomp-devel\
squashfs-tools\
squashfuse\
fuse-overlayfs\
fakeroot\
/usr/*bin/fuse2fs\
cryptsetup\
wget git
接下來,我們必須安裝 Go。首先,使用以下內容設置版本和架構:
export GOVERSION=1.19.1 OS=linux ARCH=amd64
下載必要的文件:
wget-O/tmp/go${GOVERSION}.${OS}-${ARCH}.tar.gz \n
https://dl.google.com/go/go${GOVERSION}.${OS}-${ARCH}.tar.gz
使用以下工具解壓縮並移動下載的文件:
sudotar-C/usr/local-xzf/tmp/go${GOVERSION}.${OS}-${ARCH}.tar.gz
使用以下兩個命令將 Go 可執行文件添加到用戶的 PATH:
echo'export PATH=$PATH:/usr/local/go/bin'>>~/.bashrc
source~/.bashrc
我們現在需要安裝 golangcli lint 工具:
curl-sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh \n
|sh-s---b$(go env GOPATH)/bin v1.43.0
使用以下命令將此添加到 PATH:
echo'export PATH=$PATH:$(go env GOPATH)/bin'>>~/.bashrc
source~/.bashrc
克隆 Apptainer Repo 並安裝
搞定了依賴關係,我們現在可以克隆 Apptainer 存儲庫並安裝軟件。
使用以下內容克隆存儲庫:
git clone https://github.com/apptainer/apptainer.git
使用以下命令切換到新創建的目錄:
cd apptainer
使用以下工具查看最新版本:
git checkout v1.1.0-rc.3
請查看發佈頁面,以確保使用的是最新版本。
使用以下命令運行配置腳本:
./mconfig
切換到生成目錄:
cd ./builddir
使用以下命令編譯 Apptainer:
make
完成上述命令需要相當長的時間(最多 10 分鐘)。在某種程度上,你可能認爲它已經停滯不前了。不要着急,遠離 [Ctrl]+[C] 鍵盤快捷鍵,以便完成安裝。
make 命令完成後,使用以下命令安裝 Apptainer:
sudo make install
安裝過程完成後,你可以使用以下命令查看 Apptainer 版本,以驗證一切是否按計劃進行:
apptainer --version
你應該在輸出中看到類似以下內容:
apptainer version 1.1.0-rc.3
Apptainer 已安裝並準備就緒。
如何使用 Apptainer 部署容器
現在,讓我們用 Apptainer 部署 Hello World 容器。爲此,我們將使用以下命令從 Singularity hub 下拉 hello-world 應用程序:
singularity pull shub://singularityhub/hello-world
然後,你應該會在該目錄中看到一個新文件,名爲:
hello-world_latest.sif
要運行應用程序,請發出以下命令:
./hello-world_latest.sif
應用程序將輸出:
Tacotacotaco
你還可以使用以下命令運行容器:
apptainer run hello-world_latest.sif
如果你想使用 Ubuntu 20.04 作爲容器,可以用:
apptainer pull docker://ubuntu:latest
拉取後,你可以從容器內運行命令,如下所示:
apptainer exec ubuntu_latest.sif cat /etc/os-release
你應該在輸出中看到以下內容:
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
這就是如何開始使用 Apptainer 容器部署系統。對於任何希望從部署中獲得更多安全性的容器管理員來說,這是一個很好的選擇。
原文鏈接: https://thenewstack.io/what-is-apptainer-and-how-do-you-install-it-on-ubuntu-server/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/u3khdKjW3C-N_sB8Bbx9Fw