2

我想在 Linux HPC(高性能计算)集群上执行Popper工作流。我没有管理员/sudo 权限。我知道我应该使用Singularity而不是Docker,因为 Singularity 被设计为不需要sudo运行。

但是,如果不在fakeroot/rootless模式下执行,则singularity build 需要特权。 sudo


这是我在 HPC 登录节点中所做的:

  1. 我安装了Spack (0.15.4) 和 Singularity (3.6.1):
git clone --depth=1 https://github.com/spack/spack.git
. spack/share/spack/setup-env.sh
spack install singularity
spack load singularity
  1. 我在虚拟环境中安装了 Popper (2.7.0):
python3 -m venv ~/popper
~/popper/bin/pip install popper
  1. 我在以下位置创建了一个示例工作流~/test/wf.yml
steps:
  - uses: "docker://alpine:3.11"
    args: ["echo", "Hello world!"]
  - uses: "./my_image/"
    args: ["Hello number two!"]

~/test/my_image/Dockerfile

FROM alpine:3.11
ENTRYPOINT ["echo"]
  1. 我尝试在登录节点中运行 Popper 工作流的两个步骤:
$ cd ~/test
$ ~/popper/bin/popper run --engine singularity --file wf.yml 1
[1] singularity pull popper_1_4093d631.sif docker://alpine:3.11
[1] singularity run popper_1_4093d631.sif ['echo', 'Hello world!']
ERROR  : Failed to create user namespace: user namespace disabled
ERROR: Step '1' failed ('1') !

$ ~/popper/bin/popper run --engine singularity --file wf.yml 2
[2] singularity build popper_2_4093d631.sif /home/bikfh/traylor/test/./my_image/
[sudo] password for traylor:

所以这两个步骤都失败了。


我的问题:

  • 对于来自 Docker Hub 的图像:如何启用“用户命名空间”?
  • 对于自定义映像:如何在没有容器的情况下构建映像sudo并运行容器?
4

1 回答 1

1

对于来自 Docker Hub 的图像:如何启用“用户命名空间”?

我发现需要在主机上启用用户命名空间功能。以下是检查它是否已启用的说明。

在我使用的集群计算机(Frankfurt Goethe HLR)的情况下,用户命名空间仅在计算节点中启用,而不是登录节点。这就是为什么它对我不起作用。

所以我需要使用 SLURM 发送作业(这里只是使用来自 Docker Hub 的容器的第一步):

 ~/popper/bin/popper run --engine singularity --file wf.yml --config popper_config.yml 1

popper_config.yml定义SLURM 的选项sbatch(比较 Popper文档)。它们取决于您的集群计算机。就我而言,它看起来像这样:

resource_manager:
  name: slurm
  options:
    "1": # The default step ID is a number and needs quotes here.
      nodes: 1
      mem-per-cpu: 10 # MB
      ntasks: 1
      partition: test
      time: "00:01:00"

对于自定义映像:如何在没有 sudo 的情况下构建映像并运行容器?

尝试将相同的过程应用于具有 custom 的步骤 2Dockerfile失败并显示以下消息:

FATAL:   could not use fakeroot: no mapping entry found in /etc/subuid

我尝试.sif在另一台计算机上使用 Popper 创建文件(奇点图像)并将其从~/.cache/popper/singularity/...上复制到集群计算机。不幸的是,Popper 似乎清除了该缓存文件夹,因此.sif图像不会持续存在。

于 2020-09-08T10:13:26.620 回答