用singularity来管理软件

背景

生物信息中的分析流程往往需要消耗很大的内存,读写以TB计算的数据,属于典型的高性能计算(HPC)应用。生信分析流程中要调用大量的分析程序以及内部开发脚本,环境的配置与管理极为复杂,可重复性低,导致流程的升级、管理、迁移成为大难题。

现有的IT技术中其实有解决以上问题的方法,如Docker。然而生信分析集群和普通的IT服务器又有很大区别,如开发人员无root权限,分析任务需要进行资源管理(内存,CPU)。这些问题都让Docker技术在HPC环境的应用受限,Singularity因此应运而生。

容器技术是一种以应用软件为中心的虚拟化技术。以应用软件为单元,将软件及所有的依赖打包成容器镜像,打包后的容器镜像可直接拷贝到不同的Linux主机上运行。通过容器技术,可以很好的解决安装软件时,依赖库的安装问题、软件环境的隔离以及软件环境的移植问题。

singularity的安装和使用

安装

安装依赖

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

安装GO语言

下载地址: https://golang.org/dl/

wget https://golang.org/dl/go1.14.12.linux-amd64.tar.gz #下载
tar -C /pub/software -xzvf go1.14.12.linux-amd64.tar.gz #解压
rm go1.14.12.linux-amd64.tar.gz #删除安装包

添加到环境变量

echo 'export PATH=/pub/software/go/bin(你的路径):$PATH' >> ~/.bashrc

下载singularity

下载地址: https://github.com/hpcng/singularity/releases

wget https://github.com/hpcng/singularity/releases/download/v3.7.2/singularity-3.7.2.tar.gz
tar -xzf singularity-3.7.2.tar.gz #解压
cd singularity

安装singularity

./mconfig
cd builddir