如何在没有来自主机 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
我在 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