首页 > 解决方案 > 如何在 HPC 集群上运行奇异容器?- 错误:创建用户命名空间失败:用户命名空间已禁用

问题描述

我正在尝试在 hpc 集群上启动一个奇点容器。我一直在本地运行 projectNetv2.sif 和沙箱,没有问题。将它们导出到 hpc 后,我收到以下错误。

(singularity) [me@hpc Project]$ ls
examples  projectnet_image_v2.tar.gz  projectnet_sandboxv2  projectNetv2.sif
(singularity) [me@hpc Project]$ singularity run projectNetv2.sif
INFO:    Converting SIF file to temporary sandbox...
FATAL:   while extracting SimNetv21.sif: root filesystem extraction failed: extract command failed: ERROR  : Failed to create user namespace: user namespace disabled
: exit status 1

##Attempting to run sandbox
(singularity) [me@hpc Project]$ singularity run projectnet_sandboxv2/
ERROR  : Failed to create user namespace: user namespace disabled

谁能建议我如何启用用户命名空间?或者在没有用户名空间的情况下运行 sif,因为我没有 sudo 权限。

标签: dockerdockerfilesudohpcsingularity-container

解决方案


简短的回答:

让您的 HPC 管理员安装 Singularity

更长的答案:

有两种安装 Singularity 的方法,作为特权安装或非特权/用户命名空间安装。第一种方式是默认方式,但需要 sudo/root 执行某些操作(主要是singularity build)。后者消除了对 root 的需要,但有其他系统要求。Singularity 可能需要额外的操作系统配置才能按预期运行。

除了特权/非特权安装之外,集群中的磁盘存储通常位于 NFS 或其他网络/分布式文件系统上,因此所有节点都可以访问相同的数据。不幸的是,就像任何时候涉及的情况一样,NFS 可能是导致您的问题的原因。Singularity 的核心功能依赖于 SUID,但出于(相当好的)安全原因,SUID 默认在 NFS 上被禁用。集群管理员不太可能启用该选项,因此最好的办法是让他们将其本地安装在您需要的任何计算机/交互式节点上。


推荐阅读