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 文件。