奇点容器 - 在单独的分区中绑定文件夹

Singularity container - Binding a folder in a seperate partition

我在没有 root 权限的高性能集群上有一个私人组项目文件夹(我们称之为 data_dir)。该文件夹位于单独的分区中。
我有一个奇点容器,我需要在其中访问 data_dir。官方documentation says -B flag是绑定路径的,但是我无法使用-B访问容器内的文件夹。这是我到目前为止尝试过的:

XXXXXX  login1[~/work/subcam] master ⦿ ➜  readlink data
/gpfs/projects/oceanvideo/data
XXXXXX  login1[~/work/subcam] master ⦿ ➜  singularity run -B $(readlink data):$(pwd)/data container.sif
WARNING: skipping mount of /local_scratch: no such file or directory

________                               _______________
___  __/__________________________________  ____/__  /________      __
__  /  _  _ \_  __ \_  ___/  __ \_  ___/_  /_   __  /_  __ \_ | /| / /
_  /   /  __/  / / /(__  )/ /_/ /  /   _  __/   _  / / /_/ /_ |/ |/ /
/_/    \___//_/ /_//____/ \____//_/    /_/      /_/  \____/____/|__/


You are running this container as user with ID 21530 and group 21500,
which should map to the ID and group for your user on the Docker host. Great!

tf-docker ~/work/subcam > cd data
bash: cd: data: No such file or directory
tf-docker ~/work/subcam > cd /gpfs/
tf-docker /gpfs > ls
work
tf-docker /gpfs > cd projects
bash: cd: projects: No such file or directory

如何使用容器访问 data_dir

-B是在容器中挂载目录的正确方式。几个选项:

  1. 如果 /gpfs/projects/oceanvideo/data 本身是一个符号链接,它不会在容器内解析并给出错误代码。 readlink 只会解决一个级别。找到原始的 non-linked 路径并将其与 -B.
  2. 一起使用
  3. 如果不是这样,运行 和 singularity -vv run ... 看看是否有更多关于为什么目录没有被挂载的信息。
  4. 确保 the cluster allows user binds