使用奇点时如何挂载主机文件
How to mount host file when using Singularity
我正在使用 Singularity,一种基于容器的软件,类似于 docker。
在 docker 中,当您尝试将主机系统 file/folder 挂载到容器时,您需要:
docker run -v /host/system/folder:/container/system/folder image_name [command]
我想知道如何在 Singularity 中做同样的事情,根据它的文档(老实说,网上没有太多教程)和我自己的理解,它应该是这样的:
singularity run -B /host/system/folder:/container/system/folder image_name [command]
我试过了,但它无法生成我预期的结果,所以我的问题是将主机系统文件挂载到奇点容器的正确方法是什么?
这是正确的方法,但取决于奇点的版本和您的内核(即未启用覆盖,在 RHEL/CentOS 6 中很常见)您可能需要一个预先存在的文件夹在那个位置挂载。
这可能是一个错字,但您的奇异性陈述也有误。 singularity run -B /foo:/bar image_name some_cmd some_opt
不会 运行 some_cmd some_opt
,它会执行定义文件中的 %runscript
块。如果要在容器中指定命令为运行,则使用singularity exec ...
形式。 documentation goes into more detail关于各个子命令的区别。
我正在使用 Singularity,一种基于容器的软件,类似于 docker。
在 docker 中,当您尝试将主机系统 file/folder 挂载到容器时,您需要:
docker run -v /host/system/folder:/container/system/folder image_name [command]
我想知道如何在 Singularity 中做同样的事情,根据它的文档(老实说,网上没有太多教程)和我自己的理解,它应该是这样的:
singularity run -B /host/system/folder:/container/system/folder image_name [command]
我试过了,但它无法生成我预期的结果,所以我的问题是将主机系统文件挂载到奇点容器的正确方法是什么?
这是正确的方法,但取决于奇点的版本和您的内核(即未启用覆盖,在 RHEL/CentOS 6 中很常见)您可能需要一个预先存在的文件夹在那个位置挂载。
这可能是一个错字,但您的奇异性陈述也有误。 singularity run -B /foo:/bar image_name some_cmd some_opt
不会 运行 some_cmd some_opt
,它会执行定义文件中的 %runscript
块。如果要在容器中指定命令为运行,则使用singularity exec ...
形式。 documentation goes into more detail关于各个子命令的区别。