我想在 Linux HPC(高性能计算)集群上执行Popper工作流。我没有管理员/sudo 权限。我知道我应该使用Singularity而不是Docker,因为 Singularity 被设计为不需要sudo
运行。
但是,如果不在fakeroot/rootless模式下执行,则singularity build
需要特权。 sudo
这是我在 HPC 登录节点中所做的:
- 我安装了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
- 我在虚拟环境中安装了 Popper (2.7.0):
python3 -m venv ~/popper
~/popper/bin/pip install popper
- 我在以下位置创建了一个示例工作流
~/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"]
- 我尝试在登录节点中运行 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
并运行容器?