,在slurm中也能安装ubundu了,Singularity(现叫 Apptainer)不需要root权限的容器方案,对比docker

超算容器技术的核心。Singularity(现在的新版本叫 Apptainer)就是专门为高性能计算集群、特别是你之前关心的 乌镇之光、秦岭超算这种 Slurm 调度环境 而生的容器方案。

---Singularity(现叫 Apptainer)不需要root权限的容器方案,在slurm中也能安装,对比docker

一句话理解

它是一个能让普通用户(无需 root)在共享集群上安全运行"轻量级虚拟环境"(容器)的工具,并且能直接使用 Docker 镜像,还能无缝调用 GPU/DCU 等加速卡。


为什么超算不用 Docker,而要专门搞个 Singularity?

这就回到我们之前讨论的问题了,核心是 架构和安全理念的差异:

Docker Singularity/Apptainer
权限 守护进程需 root ,用户相当于有 root 权限,多租户集群的大忌。 无守护进程,普通用户就能跑,容器内权限与用户启动时的权限一致,无法提权。
调度集成 与 Slurm 等调度器"打架",容器容易绕过资源限制。 被设计为 Slurm 的"子进程",完全受 Slurm 资源控制。
镜像格式 分层存储,需要守护进程,不适合共享文件系统。 单个文件 (.sif) 或目录,直接放在用户家目录,可移动、复制,像普通文件一样。
GPU/加速卡 需要 nvidia-docker 等复杂配置。 直通 :只要宿主机有驱动,容器内 --nv (NVIDIA) 或 --rocm (AMD/海光DCU) 即可调用。
文件系统 默认隔离,访问 Lustre 等并行文件系统需要挂载。 默认透明访问宿主文件系统,你的家目录、项目目录都能直接读写。

简单说:Docker 是为了在一台机器上隔离服务;Singularity 是为了在一个大集群上,让千百个用户安全、方便地跑各自的计算任务。


Singularity 和 Apptainer 是什么关系?

  • Singularity 是原始项目,由 Sylabs 公司主导。
  • Apptainer 是 2021 年该项目加入 Linux 基金会后改的名字,由社区维护,完全开源。
  • 现实情况 :绝大多数超算两个命令都兼容,singularity 命令一般通过软链接指向 apptainer,或者环境里两个都有。你执行 singularity 或 apptainer 效果一样。下文我统一用 apptainer。

核心概念和常用操作

1. 镜像:单文件 .sif

最大的特点:一个镜像就是一个文件 xxxx.sif。你可以从 Docker Hub 直接拉取镜像并转换成 SIF 文件。

bash 复制代码
# 把 Docker 官方的 Ubuntu 22.04 镜像拉到当前目录,生成 ubuntu_22.04.sif
apptainer pull docker://ubuntu:22.04
2. 运行容器
bash 复制代码
# 直接执行一条命令
apptainer exec ubuntu_22.04.sif cat /etc/os-release

# 进入容器的交互式 shell
apptainer shell ubuntu_22.04.sif

# 直接运行容器(会执行镜像定义的 run 命令)
apptainer run ubuntu_22.04.sif
3. 文件系统访问

这是专为 HPC 设计的最大便利:

  • 自动挂载家目录 :进入容器后,你的 $HOME 就在那里,直接读写。

  • 自动挂载当前目录:从哪启动,容器里也能看到同样的目录。

  • 要访问其他路径 ,如项目的 /data,用 -B 绑定:

    bash 复制代码
    apptainer exec -B /data ubuntu_22.04.sif ls /data
4. 调用海光 DCU(ROCm 栈)

在你关心的乌镇之光、秦岭超算上,调用 DCU 加速卡非常简单:

bash 复制代码
# --rocm 标志会挂载海光 DCU 所需设备和库
apptainer exec --rocm ubuntu_22.04.sif python3 my_dcu_script.py

前提是镜像里有对应的 ROCm 软件栈(可拉取 rocm/dev-ubuntu-22.04 等官方镜像)。

5. 安装你自己的软件(可写 sandbox)

因为 .sif 文件是只读的,如果你想在 Ubuntu 镜像里 apt install 装个包,就需要使用 sandbox(可写容器,是一个目录):

bash 复制代码
# 1. 把 docker 镜像转成可写目录
apptainer build --sandbox my_ubuntu_sandbox docker://ubuntu:22.04

# 2. 进入这个目录并打开 shell,这时可写
apptainer shell --writable my_ubuntu_sandbox

# 3. 进去后,你就是"伪root",可以 apt 安装软件了
Singularity> apt update && apt install -y vim
# 退出后,你的 vim 就保存在 my_ubuntu_sandbox 目录里了

在 Slurm 作业脚本里的典型用法

把容器和 Slurm 结合,就是常规的批处理作业:

bash 复制代码
#!/bin/bash
#SBATCH -J my_app
#SBATCH -p dcu_queue
#SBATCH -n 4
#SBATCH --gres=dcu:1       # 申请1块DCU卡

# 加载 Singularity/Apptainer 模块(如果需要)
module load apptainer

# 直接用 --rocm 运行你之前拉好的镜像
apptainer exec --rocm my_rocm_image.sif python train.py

这个作业会由 Slurm 分配资源,然后在隔离的 Ubuntu 容器里,带着你申请的那块 DCU 卡跑计算。


对你前面问题的呼应

现在回头看你之前问的"能在个人账户下安装 Ubuntu 镜像吗?":

能,而且这就是 Singularity 存在的意义。 你用 apptainer pull docker://ubuntu 拉下来的 ubuntu_22.04.sif 文件,就是一个完整的 Ubuntu 用户态环境,不需要 root,不需要管理员安装任何东西,直接在你的家目录里就能跑。想装软件就把它转成 sandbox 进去 apt install。

如果你需要,我可以立刻给你一个 针对乌镇之光/秦岭超算(海光 DCU)的完整操作示例,从拉镜像、装 ROCm 软件、到提交 Slurm 任务一步不落。

其他视频资料

https://www.bilibili.com/video/BV1Pt9YYGE8t/?spm_id_from=333.337.search-card.all.click\&vd_source=7d3841cb81fdca8b20a31fa9ee5ec8ef

================================

相关推荐
罗西的思考2 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
字节跳动视频云技术团队3 小时前
720P 直升 8K,解密 2026 抖音美好奇妙夜巨幕超分黑科技
人工智能·音视频开发
打工仔折腾 AI3 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
yyuuuzz3 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
‎ദ്ദിᵔ.˛.ᵔ₎3 小时前
关于Linux 线程局部存储的认识
linux·运维
逐米时代3 小时前
从试点验证到协同深化:制造业AI转型三年路线图设计方法
人工智能
GlobalInfo3 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
stormzhangV4 小时前
AI 越强,失业越严重
人工智能·aigc
夏文强5 小时前
Rerank 与混合检索:怎么让 RAG 从「能用」变成「好用」
人工智能·大模型·向量数据库·rag·检索增强生成
救救孩子把5 小时前
AI面试八股文-23_23-Agent可观测性与生产监控面试题
人工智能·面试·职场和发展·agent·langsmith·langfuase