Singularity 安装

发布于:2025-06-21 ⋅ 阅读:(21) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到