用singularity來管理軟件

背景

生物信息中的分析流程往往需要消耗很大的內(nèi)存,讀寫以TB計算的數(shù)據(jù),屬于典型的高性能計算(HPC)應(yīng)用。生信分析流程中要調(diào)用大量的分析程序以及內(nèi)部開發(fā)腳本,環(huán)境的配置與管理極為復(fù)雜,可重復(fù)性低,導(dǎo)致流程的升級、管理、遷移成為大難題。

現(xiàn)有的IT技術(shù)中其實有解決以上問題的方法,如Docker。然而生信分析集群和普通的IT服務(wù)器又有很大區(qū)別,如開發(fā)人員無root權(quán)限,分析任務(wù)需要進行資源管理(內(nèi)存,CPU)。這些問題都讓Docker技術(shù)在HPC環(huán)境的應(yīng)用受限,Singularity因此應(yīng)運而生。

容器技術(shù)是一種以應(yīng)用軟件為中心的虛擬化技術(shù)。以應(yīng)用軟件為單元,將軟件及所有的依賴打包成容器鏡像,打包后的容器鏡像可直接拷貝到不同的Linux主機上運行。通過容器技術(shù),可以很好的解決安裝軟件時,依賴庫的安裝問題、軟件環(huán)境的隔離以及軟件環(huán)境的移植問題。

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 #刪除安裝包

添加到環(huán)境變量

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
make
sudo make install

記得添加到環(huán)境變量
沒有出現(xiàn)報錯信息就不用管提示

快速上手

下載鏡像

可以從 Container Library(https://cloud.sylabs.io/library

例如:singularity pull library://cenat/default/blast.sif:latest

or Docker Hub(https://hub.docker.com/)下載images。

例如:singularity pull docker://ncbi/blast
singularity pull --arch amd64 library://library/default/ubuntu:20.04

創(chuàng)建沙箱

剛下載下來的ubuntu_20.04.sif 只是一個純凈的系統(tǒng),我們需要創(chuàng)建一個沙箱,給里面裝軟件。

singularity build --sandbox blast ubuntu_20.04.sif

進入容器

默認會自動掛載HOME,PWD , /tmp , /proc , /sys , /dev 目錄。

singularity shell --writable --fakeroot blast

在容器中安裝軟件,建議不要使用anaconda 安裝,而是手動安裝,我們要盡量保持容器輕量。

添加環(huán)境變量

退出容器后, 在blast/environment 中添加PATH

vi blast/environment
#!/bin/sh
# Custom environment shell code should follow 
export PATH=/opt/ncbi-blast-2.10.1+/bin:$PATH

打包

軟件全部安裝完成之后將容器打包

singularity build blast.sif blast

運行程序

singularity exec blast.sif  blasp XXX 后面接軟件的用法

運行容器

交互式運行

singularity shell blast.sif bash

直接運行

singularity exec blast.sif blastp

用戶和權(quán)限

使用容器不得不考慮安全性,安全性來自兩個方面,一個是使用了不被信任的容器,這個就像你在電腦上安裝了不被信任的軟件一樣,Singularity提供了簽名機制來驗證;另一方面是容器會不會越權(quán)對Host 做一些不該做的事情,這個是需要考慮的。

singularity 的解決辦法是會在容器內(nèi)動態(tài)創(chuàng)建一個用戶,該用戶與Host里的用戶名、組名、權(quán)限等都保持一致。這樣你在Host 中做不了的事情,在容器里也干不了。

歡迎關(guān)注Bioinfor生信云!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容