,在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,或者环境里两个都有。你执行 singularityapptainer 效果一样。下文我统一用 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

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

相关推荐
0X781 小时前
Windows 上 Codex Desktop 的 Chrome 和 Computer Use 插件不可用:一次完整排查与修复
人工智能·chatgpt·ai编程
jeffer_liu1 小时前
Spring AI 生产级实战:模型选择
java·人工智能·spring boot·后端·spring·语言模型·ai编程
fan65404141 小时前
AI搜索优化中的长尾词精准布局策略:以宠物眼科关键词为例
人工智能
Deepoch1 小时前
Deepoc VLA开发板:无人机群体协同与无网络自主作业核心
网络·人工智能·算法·无人机·deepoc·具身模型开发板
美狐美颜SDK开放平台1 小时前
直播软件开发+AI美颜SDK:下一代直播平台搭建方案
大数据·人工智能·实时音视频·美颜sdk·第三方美颜sdk
王莎莎-MinerU1 小时前
Agent 时代的科学数据 API:用 Sciverse 构建可追溯的科研检索与 RAG 工作流
大数据·人工智能·gpt·aigc·个人开发
百家方案1 小时前
2026年AI+智慧公路全场景应用解决方案白皮书
人工智能·智慧公路
凯丨1 小时前
强化学习真能“教会“智能体推理吗?拆解 Agentic RL 的边界与配方
人工智能·推荐算法
一只鹿鹿鹿1 小时前
网络安全和安防建设方案(doc文件)
大数据·运维·网络·物联网·安全