如何获取Docker运行PSORTb生成的结果并保存到本地?
Docker运行PSORTb结果导出方案
你可以选择以下任意一种方式获取容器内的结果文件:
方案1:指定结果输出到已挂载目录(最推荐)
你已经将本地./PSORTb目录绑定到容器内的/home/tdi/PSORTb/路径,只需要在PSORTb命令中添加输出参数,指定结果保存到该共享路径即可,运行完成后直接在本地./PSORTb目录下就能拿到结果:
docker run --mount type=bind,source="$(pwd)"/PSORTb,target=/home/tdi/PSORTb/ --rm -ti "brinkmanlab/psortb_commandline:1.0.2" /usr/local/psortb/bin/psort -i /home/tdi/PSORTb/all_validated_effectors.fasta --negative -o /home/tdi/PSORTb/psortb_result.txt
注:如果PSORTb不支持自定义输出路径,可使用下方其他方案
方案2:新增挂载规则映射结果默认路径
直接新增一条绑定挂载规则,将容器内生成的结果文件自动同步到本地:
# 先在本地创建结果保存目录 mkdir -p ./psortb_output # 运行容器,新增挂载规则和自动拷贝逻辑 docker run --mount type=bind,source="$(pwd)"/PSORTb,target=/home/tdi/PSORTb/ --mount type=bind,source="$(pwd)"/psortb_output,target=/psortb_output --rm -ti "brinkmanlab/psortb_commandline:1.0.2" sh -c "/usr/local/psortb/bin/psort -i /home/tdi/PSORTb/all_validated_effectors.fasta --negative && cp /*_psortb_gramneg.txt /psortb_output/"
运行完成后,本地./psortb_output目录下就会存储生成的结果文件。
方案3:保留容器手动复制结果
去掉原命令中的--rm参数,让容器运行完成后不会被自动删除,之后手动拷贝结果:
- 运行修改后的容器命令:
docker run --mount type=bind,source="$(pwd)"/PSORTb,target=/home/tdi/PSORTb/ -ti "brinkmanlab/psortb_commandline:1.0.2" /usr/local/psortb/bin/psort -i /home/tdi/PSORTb/all_validated_effectors.fasta --negative
- 运行完成后查询退出的容器ID:
docker ps -a | grep psortb_commandline
- 替换下方命令中的
<容器ID>,将结果拷贝到本地当前目录:
docker cp <容器ID>:/20210910084030_psortb_gramneg.txt ./
- 不需要保留容器的话可手动删除:
docker rm <容器ID>
内容的提问来源于stack exchange,提问作者Brandweer73
相关产品推荐
相关产品推荐

