Singularity是一种容器技术,特别适用于高性能计算(HPC)环境,能够在不需要root权限的情况下部署和分析管道,同时提供较高的安全性和较低的学习成本。
基本概念和特点
-
容器:
在Singularity中,容器是一个包含用户软件和依赖的镜像系统,可以独立运行一条或多条命令。
-
SIF:
静态Singularity容器,是压缩后的只读Singularity容器文件,也是生产环境下的主要使用形式。
-
Sandbox:
Singularity沙盒容器,是Singularity容器的可写文件。其表现形式是一个目录,常在创建和修改容器内容时使用,是开发阶段的主要使用形式。
安装Singularity
Singularity的运行依赖于Go语言,因此在安装Singularity之前,需要先安装Go语言。另外,最好准备好root权限。
安装Go语言的方法可以参考Go语言官方文档。
首先,新建并进入一个空目录,用来存放安装时下载的文件。然后可以使用以下命令安装Singularity:
-
Ubuntu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 安装扩展工具和依赖
sudo apt-get update
sudo apt-get install -y build-essential libssl-dev uuid-dev libgpgme11-dev squashfs-tools libseccomp-dev wget pkg-config git cryptsetup debootstrap
# 安装Go语言
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
sudo tar --directory=/usr/local -xzvf go1.13.linux-amd64.tar.gz
export PATH=/usr/local/go/bin:$PATH
# 下载singularity源码
wget https://github.com/singularityware/singularity/releases/download/v3.5.3/singularity-3.5.3.tar.gz
tar -xzvf singularity-3.5.3.tar.gz
# 安装Singularity
cd singularity
./mconfig
cd builddir
make
sudo make install -
CentOS(代码未测试过,请一步步尝试):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 安装依赖
yum install -y gcc libuuid-devel squashfs-tools openssl-devel make
# 安装go
export VERSION=1.17.2 OS=linux ARCH=amd64
wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz
tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz
rm -f go$VERSION.$OS-$ARCH.tar.gz
echo 'export PATH=/usr/local/go/bin:$PATH' >> /etc/profile
source /etc/profile
# 安装singularity
export VERSION=3.9.2
wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-ce-${VERSION}.tar.gz
tar -xzf singularity-ce-${VERSION}.tar.gz
cd singularity-ce-${VERSION}
./mconfig --prefix=/opt/singularity/${VERSION}
cd builddir/
make && make install
echo "export PATH=/opt/singularity/${VERSION}/bin:\$PATH" >> /etc/profile
如何使用Singularity
Singularity最基础的使用方法就是创建一个自己需要的容器,其中包含了想要运行的软件极其相关依赖。建议在root权限下操作。
-
基础容器:
1
2# 下载一个基础系统容器
singularity pull library://library/default/ubuntu -
生成沙盒容器:
1
2# 创建一个沙盒容器
singularity build --sandbox <software_name>/ ubuntu_latest.sif -
进入沙盒安装需要的软件:
1
2
3
4
5
6# 进入沙盒
singularity shell --writable <software_name>/
# 在Singularity中使用shell参数会进入一个基于沙盒容器的shell环境,
# 接下来就可以像在linux系统中安装软件一样安装我们需要的软件和依赖。
# 安装完成后可以使用exit;退出沙盒。 -
将沙盒打包为静态SIF文件:
1
2# 打包沙盒为静态SIF文件
singularity build <software_name>.sif <software_name>/ -
使用静态SIF文件运行软件(最基础):
1
2# 使用Singularity运行软件
singularity exec <software_name>.sif <software_cmd>