0%

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:
    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
  2. 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. 基础容器:
    1
    2
    # 下载一个基础系统容器
    singularity pull library://library/default/ubuntu
  2. 生成沙盒容器:
    1
    2
    # 创建一个沙盒容器
    singularity build --sandbox <software_name>/ ubuntu_latest.sif
  3. 进入沙盒安装需要的软件:
    1
    2
    3
    4
    5
    6
    # 进入沙盒
    singularity shell --writable <software_name>/

    # 在Singularity中使用shell参数会进入一个基于沙盒容器的shell环境,
    # 接下来就可以像在linux系统中安装软件一样安装我们需要的软件和依赖。
    # 安装完成后可以使用exit;退出沙盒。
  4. 将沙盒打包为静态SIF文件:
    1
    2
    # 打包沙盒为静态SIF文件
    singularity build <software_name>.sif <software_name>/
  5. 使用静态SIF文件运行软件(最基础):
    1
    2
    # 使用Singularity运行软件
    singularity exec <software_name>.sif <software_cmd>