Как запустить Popper на HPC без прав sudo

Я хочу выполнить рабочий процесс Popper в кластере Linux HPC (высокопроизводительные вычисления). У меня нет прав администратора /sudo. Я знаю, что мне следует использовать Singularity вместо Docker, потому что Singularity не требуетsudo бежать.

Однако, singularity build потребности sudoпривилегии, если они не выполняются в режиме fakeroot/rootless.


Вот что я сделал в узле входа в 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 и запустить контейнер?

0 ответов

Для образа из 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(сравните документы Поппера). Они зависят от вашего кластерного компьютера. В моем случае это выглядит так:

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 и запустить контейнер?

Попытка применить ту же процедуру к шагу 2, который имеет собственный Dockerfile, выдает это сообщение:

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

Я пытался создать .sif файл (изображение Singularity) с помощью Popper на другом компьютере и скопируйте его с ~/.cache/popper/singularity/...на кластерную машину. К сожалению, Поппер, похоже, очищает эту папку кеша, поэтому .sif изображение не сохраняется.

Другие вопросы по тегам