singularity 使用

2022.8.29 星期一

新的一周,开始了,没有下地的一天感觉自己棒极了,很舒适,很巴适。阴天凉快的我都找出来一件外套披着来上班,组会的讨论,还是只有我孤零零一个,队友们都很颓废,不知道为啥,可能身上没有啥背负的东西,没有自己想要的目标吧,颓废无所事事的人大部分都是这种状态,毕竟自己也有过颓废期。总之事情再坏,你在慢慢努力 ,总会朝着好的方向前进,事情再好,你一直躺平,总会朝着差的方向堕落。你的路一直掌握在你的手中,就看你想未来的你成为什么样子而已,加油,每日鸡汤,干杯!

singularity的使用

一般singularity安装好后相当于一个容器,你想进入容器并使用容器这需要一些容器管理工具。
1.下载 images
可以从 Container Library (https://cloud.sylabs.io/library)or Docker Hub (https://hub.docker.com/ images)。

singularity pull --arch amd64 library://library/default/ubuntu:20.04

先下载虚拟操作系统

2.创建沙箱
刚下载下来的ubuntu_20.04.sif只是一个空的操作系统,我们需要创建一个沙箱,然后在里面安装软件。

singularity build --sandbox blast ubuntu_20.04.sif

3.进入容器
容器内部会默认自动挂载$HOME, $PWD , /tmp , /proc , /sys , /dev 目录。挂载相当于电脑上插了一个U盘,相当于U盘挂载在电脑上,这样容器与系统之间的文件传输会十分方便。

singularity shell --writable --fakeroot blast

shell是相当于进入容器中使用交互命令。代码中以blast软件为例子。在容器里面安装软件,最好不要使用anaconda来安装,而是手动安装。因为我们要尽量保持容器轻量,anaconda会安装很多不必要的东西。

4.打包
有时候我们不一定是一对一的对软件进行封装打包,往往我们会把有联系的系列软件打包到一起方便使用。

singularity build blast.sif blast

blast是文件夹,blast.sif是打包后的输出文件。

5.运行程序

singularity exec blast.sif \
makeblastdb -dbtype prot -in sind.fasta -out sind
singularity exec blast.sif \
blastp -query atha_FAD4.fa -db sind -out blast.out -outfmt 7

后面使用singularity运行程序都是singularity exec 加sif文件行式。

直接下载打包好的软件

1.下载镜像
可以从 Container Library(https://cloud.sylabs.io/library)or
Docker Hub(https://hub.docker.com/ images。

# 从 Container Library 下载 sif 格式镜像
singularity pull library://cenat/default/blast.sif:latest
# 从 DockerHub 下载 sif 格式镜像
singularity pull docker://ncbi/blast

singularity强大之处在与从Docker上下载下来的,直接可以转换成singularity中可用模式,虽然singularity没几个镜像,但是Docker里面可是非常丰富。

2.运行容器
一般运行容器分为交互式运行和直接运行。

# 交互式运行
$ singularity shell blast.sif bash
Singularity> blastp
BLAST query/options error: Either a BLAST database or subject sequence(s) must be specified
Please refer to the BLAST+ user manual.
Singularity>
# 直接运行
$ singularity exec blast.sif blastp

3.文件夹挂载
默认会自动挂载 $HOME, $PWD , /tmp , /proc , /sys , /dev 目录。

# 通过 --bind 挂载文件夹
$ singularity shell --bind /pub/software:/mnt blast.sif
Singularity> ls /mnt/samtools-1.9.tar.bz2
/mnt/samtools-1.9.tar.bz2
Singularity>
# 不写挂载点则和本地目录一致
$ singularity shell --bind /pub/software blast.sif
Singularity> ls /pub/software/samtools-1.9.tar.bz2
/pub/software/samtools-1.9.tar.bz2
Singularity>

4.用户和权限
singularity的安全性:Singularity提供了签名机制来验证;另一方面是容器会不会越权对 Host 做一些不该做的事情,这个是需要考虑的singularity 的解决办法是会在容器内动态创建一个用户,该用户与 Host里的用户名、组名、权限等都保持一致。这样你在 Host 中做不了的事情,在容器里也干不了。但是有时候我们需要以 root 权限(–fakeroot)登录容器,这时也不用担心,因为 root 只对容器内有效。需要注意的是,Singularity 默认是绑定 $PWD 和 $HOME 目录的,对这些目录的操作都会修改 Host 文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

μμ豆奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值