singularity

singularity 安装

安装依赖

在ubuntu上

sudo apt-get update && sudo apt-get install -y \
    build-essential \
    libssl-dev \
    uuid-dev \
    libgpgme11-dev \
    squashfs-tools \
    libseccomp-dev \
    pkg-config

在centos上

sudo yum update -y && \
    sudo yum groupinstall -y 'Development Tools' && \
    sudo yum install -y \
    openssl-devel \
    libuuid-devel \
    libseccomp-devel \
    wget \
    squashfs-tools

安装Go

Singularity 3.0以上版本主要用Go编写,因此需要安装Go来从源代码编译

首先,访问Go下载页面,并选择相应的Go版本(版本选择1.11.1以上)

export VERSION=1.11 OS=linux ARCH=amd64
cd /tmp
wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz

将Go安装包解压缩到/usr/local

sudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

最后设置Go环境变量

echo 'export GOPATH=${HOME}/go' >> ~/.bashrc
echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc
source ~/.bashrc

下载singularity

先创建Go的编译目录

mkdir -p $GOPATH/src/github.com/sylabs
cd $GOPATH/src/github.com/sylabs
git clone https://github.com/sylabs/singularity.git

安装Go依赖项

使用Deo管理依赖关系,用go get安装

go get -u -v github.com/golang/dep/cmd/dep

编译安装

必须以root身份安装

cd $GOPATH/src/github.com/sylabs/singularity
./mconfig
make -C builddir
sudo make -C builddir install

验证安装是否成功

singularity help

Linux container platform optimized for High Performance Computing (HPC) and
Enterprise Performance Computing (EPC)

Usage:
  singularity [global options...]

Description:
  Singularity containers provide an application virtualization layer enabling
  mobility of compute via both application and environment portability. With
  Singularity one is capable of building a root file system that runs on any 
  other Linux system where Singularity is installed.

Options:
  -d, --debug     print debugging information (highest verbosity)
  -h, --help      help for singularity
      --nocolor   print without color output (default False)
  -q, --quiet     suppress normal output
  -s, --silent    only print errors
  -v, --verbose   print additional information

Available Commands:
  apps        List available apps within a container
  build       Build a Singularity image
  cache       Manage the local cache
  capability  Manage Linux capabilities for an image
  exec        Run a command within a container
  help        Help about any command
  inspect     Show metadata for an image
  instance    Manage containers running as services
  key         Manage OpenPGP keys
  oci         Manage OCI containers
  plugin      Manage singularity plugins
  pull        Pull an image from a URI
  push        Upload image to the provided library (default is "https://library.sylabs.io")
  remote      Manage Sylabs Cloud endpoints
  run         Run the user-defined default command within a container
  run-help    Show the help for an image
  search      Search a Library for images
  shell       Run a shell within a container
  sign        Attach a cryptographic signature to an image
  test        Run the user-defined tests within a container
  verify      Verify cryptographic signatures attached to an image
  version     Show the version for Singularity

Examples:
  $ singularity help <command> [<subcommand>]
  $ singularity help build
  $ singularity help instance start


For additional help or support, please visit https://www.sylabs.io/docs/

删除旧版本

sudo rm -rf /usr/local/libexec/singularity
sudo rm -rf /usr/local/etc/singularity
sudo rm -rf /usr/local/include/singularity
sudo rm -rf /usr/local/lib/singularity
sudo rm -rf /usr/local/var/lib/singularity/
sudo rm /usr/local/bin/singularity
sudo rm /usr/local/bin/run-singularity
sudo rm /usr/local/etc/bash_completion.d/singularity 
sudo rm /usr/local/man/man1/singularity.1

singularity 使用

创建镜像/沙盒

可以通过build命令直接创建一个镜像

singularity build centos.img docker://centos:latest

build命令可以直接创建镜像或者singularity默认的sif容器文件,还可以是simg

也可以通过build命令直接创建一个沙盒

singularity build --sandbox centos/ docker://centos:latest

build命令加上 --sandbox可以直接创建沙盒,沙盒可以直观的看到容器内的目录,直观方便

以上实际上是将Container Library或者Docker Hub上的镜像download下来用作容器。

以library:// 开头的URI,表示是从Container Library构建
以docker:// 开头的URI,表示是从Docker Hub构建
以shub:// 开头的URI,表示是从Singularity Hub构建

同样可以用singularity自定义文件(例如Singularity 或者singularity.def)来建立容器

Bootstrap: docker
From: ubuntu:16.04

%post
    apt-get -y update
    apt-get -y install fortune cowsay lolcat

%environment
    export LC_ALL=C
    export PATH=/usr/games:$PATH

%runscript
    fortune | cowsay | lolcat
sudo singularity build lolcow.sif lolcow.def

与容器进行交互

通过shell —writable来对容器进行操作

singularity shell --writable centos/    #此时是对沙盒进行操作

Singularity centos:~/centos> 

安装软件环境

接下来以安装vasp为例

安装intel编译器

下载好tgz包和有效的license文件后,进入容器

tar -zxvf parallel_studio_xe_2017_update5.tgz
cd parallel_studio_xe_2017_update5
./install.sh #卸载操作也是执行这个文件

安装过程有7步,其中第三步骤选择

I want to activate my product using a serial number

cat 查看license里的序列号后输入即可

intel编译器会默认安装在/opt/intel目录下。安装完成后需要添加PATH到环境变量中。 vim ~/.bashrc ,修改单个用户。vim /etc/profile,修改全局。插入如下代码

source /opt/intel/compilers_and_libraries_2017.5.239/linux/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2017.5.239/linux/bin/iccvars.sh intel64
source /opt/intel/compilers_and_libraries_2017.5.239/linux/bin/ifortvars.sh intel64
source /opt/intel/compilers_and_libraries_2017.5.239/linux/mkl/bin/mklvars.sh intel64
source /opt/intel/impi/2017.4.239/bin64/mpivars.sh

以上操作都是在singularity沙盒目录中执行的操作,处于容器环境中,是可以同时看见容器中的文件和本机系统的文件的。例如此时名为centos的沙盒目录的位置是本机的 /root 目录下,那么容器里的 /root 目录实际路径是 ·/root/centos/root

也就是说,在名为 centos 容器中,Intel编译器默认安装的真实路径实际上是/root/centos/opt/intel 但是由于在容器中是完全隔离的,因此不需要考虑这个真实路径,在配置环境变量的时候依然是 opt/intel

修改环境变量完成后

source ~/.bashrc #或者 source /etc/profile

使用接下来的命令查看环境变量是否添加成功

which icc ifort icpc mpiifort

如果此时退出容器,那么下次进入容器后需要重新 source /etc/profile

否则会报

which: no icc in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
which: no ifort in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
which: no icpc in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
which: no mpiifort in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)

安装VASP

解压VASP压缩包, 进入文件夹复制makefile.include

cd vasp.5.4.4 
cp arch/makefile.include.linux_intel makefile.include

修改makefile.include中的OBJECTS

OBJECTS    = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o /opt/intel/compilers_and_libraries_2017.5.239/linux/mkl/interfaces/fftw3xf/libfftw3xf_intel.a

安装

make all 2>&1 | tee make.log

添加环境变量,vim ~/.bashrc 或者 vim /etc/profile

PATH=/root/vasp.5.4.1/build/std:$PATH
source ~/.bashrc #或者 source /etc/profile

将沙盒打包成镜像或者sif文件

在对容器环境编写好之后,需要将其打包成sif文件或者是镜像的话,同样使用build命令来建立相应的文件

singularity build centos.img centos/

同样可以用 singularity shell --writable centos.img 进入容器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352