Singularity—生信流程搭建的幸运儿

电子说

1.3w人已加入

描述

1

Singularity简介

怎么样高效的搭建分析流程且能保证分析流程稳定运行的使用效果呢?目前主流的是conda容器技术 (container)。

虽然 conda能解决大部分生信软件安装问题 ,但是 若软件安装多了 ,会出现兼容性问题以及 ”臃肿” 现象,为此,引入容器技术(container)来解决这些问题。

在容器技术中,docker和singularity常用的容器软件。但 docker不太适合 HPC 环境 。因为在调度管理器上容器无法施加资源限制、多用户(非 root 用户)使用时会出现权限问题、而且docker会存在一些不必要的资源开销。

为此,引进singularity容器来解决docker的一些 缺点 。首先,singularity可以兼容docker的镜像,同时构建出的镜像可以很容易进行拷贝和转移,且体积更小;此外singularity 假设用户在一个有root权限的系统上构建容器,在一个没有root权限的系统上运行容器,兼顾了数据的安全性和便捷性,更加符合实际的应用场景。

2

Singularity安装

方法1:conda安装( 最简便、无需root权限

conda create -n singularity singularity -y

方法2:自行编译

#1. 安装依赖
sudo apt-get update && sudo apt-get install -y \\
build-essential \\
uuid-dev \\
libgpgme-dev \\
squashfs-tools \\
libseccomp-dev \\
wget \\
pkg-config \\
git \\
cryptsetup-bin
#2.安装 GO 语言;下载地址:https://golang.org/dl/
cd
wget https://dl.google.com/go/go1.20.1.linux-amd64.tar.gz
tar -xzvf go1.20.1.linux-amd64.tar.gz
rm go1.20.1.linux-amd64.tar.gz
添加到环境变量
echo 'export PATH=~/go/bin:$PATH' >>~/.bashrc
#3. 下载 singularity;下载地址:https://github.com/hpcng/singularity/releasessudo
apt install singularity-container #不一定是最新版
#或
wget https://github.com/apptainer/singularity/releases/download/v3.8.7/singularity-3.8.7.tar.gz
$ tar -xzf singularity-3.8.7.tar.gz
cd singularity
#4. 安装 singularity
./mconfig
cd builddir
make
sudo make install
#最后记得添加到 PATH哦。

3

Singularity基础知识

1.Singularity的两种镜像格式

docker容器

2.两种镜像格式之间的转换

docker容器

3.其他常见命令

docker容器

4

Singularity实操

  1. 下载 images

Container Library

Docker Hub

#官方库下载
singularity pull --arch amd64 library://library/default/ubuntu:20.04
#Docker镜像转Singularity镜像
singularity pull docker://ubuntu:20.04
  1. 创建沙箱
singularity build --sandbox blast ubuntu_20.04.sif
  1. 进入容器

默认会自动挂载 **HOME, **PWD , /tmp , /proc , /sys , /dev 目录。

容器内用户完全一致,当需要root权限时加–fakeroot参数进入容器,且root只在容器内有效。

#交互式运行
singularity shell ubuntu_20.04.sif bash
#Singularity> echo 'hello world'
#Singularity>id
#直接运行
singularity exec ubuntu_20.04.sif echo 'hello world'
#修改容器
singularity shell --writable --fakeroot blast
#Singularity>id
apt update
cd /opt/
wget https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.13.0+-x64-linux.tar.gz
tar -zxvf ncbi-blast-2.13.0+-x64-linux.tar.gz
  1. 打包
singularity build blast.sif blast
  1. 运行程序
#通过 --bind 挂载文件夹
singularity shell --bind /home/test/test.fa:/mnt blast.sif
#直接运行程序
singularity exec blast.sif \\
makeblastdb -dbtype prot -in test.fasta -out test
singularity exec blast.sif \\
blastp -query test.fa -db test -out blast.xml -outfmt 6

5

总结

总的来说,现在存在着各种各样的容器技术,比如docker,podman,singularity等。每一个都有自己的优缺点使用范围 。比如docker****适合于web网页开发等、singularity****适合于在集群上挖掘大数据。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分