Singularity 安装
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 |