用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