Singularity 是什么?
-
核心功能:用于創建/運行容器(將應用+依賴打包的獨立環境)。
-
與 Docker 的區別:專為 HPC(高性能計算)設計,無需后臺守護進程,支持非 root 運行容器(但安裝本身需 root 權限)。
適用于在具有 root 權限的計算機上從源代碼安裝 Singularity。其他安裝選項(如構建 RPM 包、非 root 權限安裝)請參閱《管理員指南》的“安裝”部分。
若需在共享資源上請求安裝,請參考“請求安裝”部分聯系系統管理員。
官網:Documentation | Apptainer - Portable, Reproducible Containers
Singularity于Docker區別
在 HPC 環境中,Docker 因依賴需 root 權限的 dockerd 守護進程,與 Slurm 等調度器的 cgroups 資源分配機制沖突,且數據卷掛載存在越權訪問風險。而 Singularity 支持普通用戶直接啟動容器,進程可被 Slurm 當作普通進程管理,能嚴格隔離容器訪問范圍,還原生集成 MPI 等高性能通信庫,與調度器無縫協作,其單一.sif 鏡像文件更便于在并行文件系統中傳輸共享,避免 Docker 分層鏡像的存儲開銷,更適配 HPC 環境需求。
Singularity與 Docker 的應用場景對比
場景 | Docker 更適合 | Singularity 更適合 |
---|---|---|
開發測試 | 快速迭代、微服務架構 | HPC 集群、科學計算 |
權限要求 | 開發環境(可接受 root 權限) | 多租戶 HPC、共享服務器 |
鏡像分發 | 云原生應用(Kubernetes) | 并行文件系統(Lustre/GPFS) |
資源隔離 | 細粒度 CPU / 內存限制 | 與 Slurm 等調度器深度集成 |
Docker 與 Singularity 在 HPC 環境的核心對比
問題領域 | Docker 的缺陷 | Singularity 的解決方案 | HPC 場景影響 |
---|---|---|---|
權限模型 | 依賴 root 權限的守護進程 (dockerd ),普通用戶需 sudo 提權操作。 | 無守護進程:普通用戶直接運行容器,進程身份繼承用戶權限(UID/GID 映射),禁止容器內提權。 | ? 消除安全風險,符合多租戶隔離要求。 |
資源隔離 | dockerd 與 Slurm/PBS 的 cgroups 資源分配沖突,無法被調度器直接管理。 | 與調度器原生協同:容器進程作為普通進程被調度器管控,直接復用 Slurm 的 cgroups 資源限制。 | ? 實現精確資源分配,避免干擾其他任務。 |
數據安全 | 掛載卷時可能暴露主機敏感路徑(如 / 、/etc ),容器內 root 可越權訪問。 | 安全沙盒機制: 1. 默認隔離主機系統路徑; 2. 掛載卷時強制權限映射(用戶僅訪問授權目錄)。 | ? 杜絕越權訪問,滿足審計與合規要求。 |
高性能計算支持 | 需復雜配置支持 GPU/NIC 直通、MPI 庫兼容性差(如 Docker 容器間 RDMA 通信困難)。 | 原生高性能支持: 1. 無縫集成 GPU( --nv )、RDMA(--ib );2 |