1
Singularity簡介
怎么樣高效的搭建分析流程且能保證分析流程穩定運行的使用效果呢?目前主流的是conda和 容器技術 (container)。
雖然 conda能解決大部分生信軟件安裝問題 ,但是 若軟件安裝多了 ,會出現兼容性問題以及 ”臃腫” 現象,為此,引入容器技術(container)來解決這些問題。
在容器技術中,docker和singularity 是常用的容器軟件。但 docker不太適合 HPC 環境 。因為在調度管理器上容器無法施加資源限制、多用戶(非 root 用戶)使用時會出現權限問題、而且docker會存在一些不必要的資源開銷。
為此,引進singularity容器來解決docker的一些 缺點 。首先,singularity可以兼容docker的鏡像,同時構建出的鏡像可以很容易進行拷貝和轉移,且體積更小;此外singularity 假設用戶在一個有root權限的系統上構建容器,在一個沒有root權限的系統上運行容器,兼顧了數據的安全性和便捷性,更加符合實際的應用場景。
2
Singularity安裝
方法1:conda安裝( 最簡便、無需root權限 )
conda create -n singularity singularity -y
方法2:自行編譯
#1. 安裝依賴
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
#2.安裝 GO 語言;下載地址:https://golang.org/dl/
cd
wget https://dl.google.com/go/go1.20.1.linux-amd64.tar.gz
tar -xzvf go1.20.1.linux-amd64.tar.gz
rm go1.20.1.linux-amd64.tar.gz
添加到環境變量
echo 'export PATH=~/go/bin:$PATH' >>~/.bashrc
#3. 下載 singularity;下載地址:https://github.com/hpcng/singularity/releasessudo
apt install singularity-container #不一定是最新版
#或
wget https://github.com/apptainer/singularity/releases/download/v3.8.7/singularity-3.8.7.tar.gz
$ tar -xzf singularity-3.8.7.tar.gz
cd singularity
#4. 安裝 singularity
./mconfig
cd builddir
make
sudo make install
#最后記得添加到 PATH哦。
3
Singularity基礎知識
1.Singularity的兩種鏡像格式
2.兩種鏡像格式之間的轉換
3.其他常見命令
4
Singularity實操
- 下載 images
Container Library
Docker Hub
#官方庫下載
singularity pull --arch amd64 library://library/default/ubuntu:20.04
#Docker鏡像轉Singularity鏡像
singularity pull docker://ubuntu:20.04
- 創建沙箱
singularity build --sandbox blast ubuntu_20.04.sif
- 進入容器
默認會自動掛載 **HOME, **PWD , /tmp , /proc , /sys , /dev 目錄。
容器內用戶完全一致,當需要root權限時加–fakeroot參數進入容器,且root只在容器內有效。
#交互式運行
singularity shell ubuntu_20.04.sif bash
#Singularity> echo 'hello world'
#Singularity>id
#直接運行
singularity exec ubuntu_20.04.sif echo 'hello world'
#修改容器
singularity shell --writable --fakeroot blast
#Singularity>id
apt update
cd /opt/
wget https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.13.0+-x64-linux.tar.gz
tar -zxvf ncbi-blast-2.13.0+-x64-linux.tar.gz
- 打包
singularity build blast.sif blast
- 運行程序
#通過 --bind 掛載文件夾
singularity shell --bind /home/test/test.fa:/mnt blast.sif
#直接運行程序
singularity exec blast.sif \\
makeblastdb -dbtype prot -in test.fasta -out test
singularity exec blast.sif \\
blastp -query test.fa -db test -out blast.xml -outfmt 6
5
總結
總的來說,現在存在著各種各樣的容器技術,比如docker,podman,singularity等。每一個都有自己的優缺點和 使用范圍 。比如docker****適合于web網頁開發等、singularity****適合于在集群上挖掘大數據。
-
HPC
+關注
關注
0文章
316瀏覽量
23801 -
Docker
+關注
關注
0文章
472瀏覽量
11864 -
docker容器
+關注
關注
0文章
30瀏覽量
3326
發布評論請先 登錄
相關推薦
評論