如何解决有没有办法用我当前目录中的文件打开预构建的 Singularity 容器?
我在远程集群中为 Tensorflow ML 使用预先构建的奇点容器。
我打开位于 /cvmfs/unpacked.cern.ch/registry.hub.docker.com/fnallpc/
的奇点容器
使用如下命令
singularity run --nv --bind `readlink $HOME` --bind `readlink -f ${HOME}/nobackup/`
--bind /cvmfs /cvmfs/unpacked.cern.ch/registry.hub.docker.com/fnallpc/fnallpc-docker:tensorflow-latest-devel-gpu-singularity
它可以很好地打开奇点图像并且命令有效。
现在,我有几个文件需要 Tensorflow 环境,但是当我打开图像时,显然没有文件。当我打开 Singularity 容器时,有没有办法可以使用我的工作目录(需要 Tensorflow 环境)中的文件?我想知道是否有一个命令可以一起打开我工作目录中的图像和文件,这样我就可以在容器图像中访问这些文件。
解决方法
默认情况下,您的 $HOME
和当前目录都会自动挂载。但是,如果容器内不存在路径,则允许自动挂载失败。 例如,您从 /cluster/storage/somepath
执行,但奇点容器内没有 /cluster
。如果 $HOME
出现在某个奇怪的地方,但不太常见,也会发生同样的情况。
显式使用 --bind
没有这个问题。添加 --bind "$PWD"
应该可以解决这个问题。
您可以使用 singularity exec --bind "$PWD" image.sif pwd
快速测试您是否按预期执行。容器内的工作目录与容器外的工作目录匹配(如果可用),如果 $HOME
不可用,则回退到 $PWD
,如果 /
和 { 都不可用,则回退到 $PWD
{1}} 在图像中可用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。