docker - 如何在 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 权限。
解决方案
简短的回答:
让您的 HPC 管理员安装 Singularity
更长的答案:
有两种安装 Singularity 的方法,作为特权安装或非特权/用户命名空间安装。第一种方式是默认方式,但需要 sudo/root 执行某些操作(主要是singularity build
)。后者消除了对 root 的需要,但有其他系统要求。Singularity 可能需要额外的操作系统配置才能按预期运行。
除了特权/非特权安装之外,集群中的磁盘存储通常位于 NFS 或其他网络/分布式文件系统上,因此所有节点都可以访问相同的数据。不幸的是,就像任何时候涉及的情况一样,NFS 可能是导致您的问题的原因。Singularity 的核心功能依赖于 SUID,但出于(相当好的)安全原因,SUID 默认在 NFS 上被禁用。集群管理员不太可能启用该选项,因此最好的办法是让他们将其本地安装在您需要的任何计算机/交互式节点上。
推荐阅读
- postgresql - 从不同的表中查找不同组的前 n 个结果
- cmake - 如何更改 Cmake 可执行文件的运行目录
- r - r 匹配相似的行
- aws-amplify - 无论如何使用 AWS Amplify 自定义 `aws-exports.js` 中的值
- metal - 对thread_position_in_grid感到困惑
- math - 用 3D 顶点绘制 2D 面
- sql - 针对多个表构建此 SQL 查询的正确方法
- r - 如何在 R 中执行前向选择、后向选择和逐步回归?
- regex - 正则表达式匹配包含子集的整个字符串
- gradle - flutter.buildMode=release 显示未使用的属性