如何在没有来自主机 OS 的 interact/sources 选项的奇点容器内执行命令?

How to execute a command inside a singularity container that do not interact/sources options from the host OS?

我在 Docker 容器上安装了一个二进制文件,我一直在尝试通过 Singularity 运行:

singularity run docker://repo/container_image ./repository/bin --flag

问题是使用这样的命令它会获取我的 .bashrc,这会导致二进制文件出现一些问题。 所以我尝试 运行 将其与 --no-home 结合并标记 repositories 以使用 -B:

安装
singularity run --no-home -B /hostrepo01:/data,/hostrepo02:/results docker://repo/container_image ./repository/bin --flag

这仍然会从我的 host os 导入一些路径,例如,如果我用下面的选项打开 Singularity shell 并执行 cd, shell 试图访问我的 home 在 host OS.

上的地址
singularity run --no-home -B /hostrepo01:/data,/hostrepo02:/results docker://repo/container_image

除了我在 [=17= 中指定的内容之外,我如何在没有 host OS 中的 interact/sources 选项的奇点容器内执行命令]旗帜?

您可以使用 --contain 标志

  -c, --contain                use minimal /dev and empty other
                               directories (e.g. /tmp and $HOME) instead
                               of sharing filesystems from your host
singularity run --contain -B /hostrepo01:/data,/hostrepo02:/results docker://repo/container_image