Singularity 安装与使用教程:高性能计算环境容器化指南

发布于

更新于

Singularity是一种容器技术,特别适用于高性能计算(HPC)环境,能够在不需要root权限的情况下部署和分析管道,同时提供较高的安全性和较低的学习成本‌。

基本概念和特点

  1. 容器:在Singularity中,容器是一个包含用户软件和依赖的镜像系统,可以独立运行一条或多条命令。
  2. SIF:静态Singularity容器,是压缩后的只读Singularity容器文件,也是生产环境下的主要使用形式。
  3. Sandbox‌:Singularity沙盒容器,是Singularity容器的可写文件。其表现形式是一个目录,常在创建和修改容器内容时使用,是开发阶段的主要使用形式。

安装Singularity

Singularity的运行依赖于Go语言,因此在安装Singularity之前,需要先安装Go语言。另外,最好准备好root权限。

安装Go语言的方法可以参考Go语言官方文档

首先,新建并进入一个空目录,用来存放安装时下载的文件。然后可以使用以下命令安装Singularity:

1. Ubuntu:

Bash
# 安装扩展工具和依赖
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
查看完整代码

2. CentOS(代码未测试过,请一步步尝试):

Bash
# 安装依赖
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. 基础容器:

Bash
# 下载一个基础系统容器
singularity pull library://library/default/ubuntu

2. 生成沙盒容器:

Bash
# 创建一个沙盒容器
singularity build --sandbox <software_name>/ ubuntu_latest.sif

3. 进入沙盒安装需要的软件:

Bash
# 进入沙盒
singularity shell --writable <software_name>/

# 在Singularity中使用shell参数会进入一个基于沙盒容器的shell环境,
# 接下来就可以像在linux系统中安装软件一样安装我们需要的软件和依赖。
# 安装完成后可以使用exit;退出沙盒。

4. 将沙盒打包为静态SIF文件:

Bash
# 打包沙盒为静态SIF文件
singularity build <software_name>.sif <software_name>/

5. 使用静态SIF文件运行软件(最基础):

Bash
# 使用Singularity运行软件
singularity exec <software_name>.sif <software_cmd>

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注