Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在集群中运行singularity docker_Linux_Bash_Docker_Singularity Container - Fatal编程技术网

Linux 在集群中运行singularity docker

Linux 在集群中运行singularity docker,linux,bash,docker,singularity-container,Linux,Bash,Docker,Singularity Container,对于sientific项目,我需要在这里使用singularity项目: 我通过运行包装器脚本来运行它:bash-dfam-tetools.sh #!/bin/bash bash /beegfs/data/TOOLS/TETools/dfam-tetools.sh RepeatModeler -h echo "test" 然后我得到了一个新的环境: (dfam-tetools /beegfs/data/TOOLS/TETools)$ 然后我可以在docker里面运行我

对于sientific项目,我需要在这里使用singularity项目:

我通过运行包装器脚本来运行它:bash-dfam-tetools.sh

#!/bin/bash
bash /beegfs/data/TOOLS/TETools/dfam-tetools.sh
RepeatModeler -h
echo "test"
然后我得到了一个新的环境:

(dfam-tetools /beegfs/data/TOOLS/TETools)$ 
然后我可以在docker里面运行我需要的所有软件

但问题是,如何在集群中以相同的方式运行(例如使用
slurm
SGE
?)

我尝试创建一个bash文件,例如:

testrun.sh

#!/bin/bash
bash /beegfs/data/TOOLS/TETools/dfam-tetools.sh
RepeatModeler -h
echo "test"
但我只得到输出:

/var/spool/slurmd/job2055108/slurm_script: line 3: RepeatModeler: command not found
test
是否有人已在群集中运行docker?

编辑

由于需要访问不在当前目录中的另一个目录,因此应运行singularity命令,而不是
dfam tetools.sh
脚本:

singularity run-B/data:/datadocker://dfam/tetools:latest RepeatModeler-h
原始接受答案:

通过查看文档和脚本
dfam tetools.sh
,您应该编写:

#/bin/bash
bash/beegfs/data/TOOLS/TETools/dfam-TETools.sh——RepeatModeler-h
如果需要运行更多命令,我建议将它们写入bash文件,并按以下方式运行此文件:

#/bin/bash
bash/beegfs/data/TOOLS/TETools/dfam-TETools.sh——bash-myscript.sh
仔细阅读文档,因为它写得很好

来自chippycentra: 编辑:多亏了frodon,以下代码为我工作:

singularit
y运行-B//beegfs/data/user1////beegfs/data/user1/docker://dfam/tetools:latest BuildDatabase-name$Sp_name.DB-engine rmblast$ASSEMBLY


其中
/beegfs/data/user1/
是找到文件的路径

好的,谢谢,但现在我面临一个新问题:由于我在docker中,软件找不到我调用的文件:我得到
文件不存在
,即使我给出了完整的路径,我也不太熟悉它,我应该同时给出一个环境路径吗?
dfam tetools.sh
脚本将当前目录装载为容器中的
/work
。如果您的文件位于当前目录中,请在脚本
myscript.sh
中写入
/work/my_file
。您也可以将
/work
称为
$HOME
。如果文件不在当前目录下,例如/data/path1/path2/file.fat,该怎么办?然后,您必须自己运行singularity命令并提供一个绑定选项:
singularity run-B/data:/datadocker://dfam/tetools:latest bash myscript.sh
如果使用docker,该命令有更多选项:
docker run-it--rm--init--mount type=bind,source=$(pwd),target=/work--mount type=bind,source=/data,target=/data--user“$(id-u):$(id-g)”--workdir”/work--env“HOME=/work”dfam/tetools:latest bash myscript.sh
(显然无法测试该命令)