Singularity 2016
Introduction
Singularity is a portable application stack packaging and runtime utility. With Singularity, you can provide whole working environments and install the OS, and Software you need to use within a container. In the best case, "this means that you don’t have to ask your cluster admin to install anything for you - you can put it in a Singularity container and run."[¹ http://singularity.lbl.gov/]
Installed version
The currently installed version is available on environment hpc-env/6.4
Singularity/2.4.2-GCCcore-6.4.0
Using Singularity
Singularity can be a very powerful tool to create containers with your favoured OS environment, and all the tools you need - completely without the help or permission of the HPC administrators. In order to use Singularity, you need to create your own containers on a local device since you need root permissions to do so which we can't grant our users on our cluster. In the following steps we will show you exemplarily how to create your own containers, fill them with the software you need, and how to use them to start calculating.
Installation
In our example, we use CentOS 7. On other distributions, the procedure should be similar, but some steps might slightly differ, especially the needed dependencies for the installation.
To install Singularity on your system, you need to install one dependency, clone the GitHub repository and perform confingure/make/make install. To make this as simple as possible, open a terminal, and copy-paste this lines:
cd ~ && mkdir singularity_install && cd singularity_install sudo yum install libarchive-devel -y git clone https://github.com/singularityware/singularity.git cd singularity git fetch --all git checkout 2.6.1 ./autogen.sh ./configure --prefix=/usr/local make sudo make install
Now, singularity should be installed on your system. Just to be sure, check the version of the newly installed software:
singularity --version
Singularity should display the installed version.
should this be the case, you can remove the folder containing the source files we originally needed for the installation.
Creating Containers
There are three ways to create containers:
- A) Downloading solely OS containers and manually adding software packets
- B) Creating installaton scripts, including OS and post-install commands
- C) Searching for 'ready to go scripts' from Singularitys repository
Below we will briefly cover each of the methods mentioned.
A) Download and modify
Always remember: The following commands must be executed on your own local machine! To download an image only containing centos, type in the following command:
sudo singularity build --sandbox centos7.simg docker://centos:7
Now, you can switch into the container environment and install the packets you need:
sudo singularity shell --writable centos7.simg yum install vim -y exit
In this example, we switched to the containers shell, installed the text editor vim, and exited from the containers shell with exit.
B) Working with your own recipe
By creating a personal recipy, you have the advantages of creating your personal environment, chosing the OS and installing the software that fits your needs perfectly.
Start by creating a script file, e.g. with the vim editor...
vim my_container.def
... and fill it with the settings you prefer:
# Chose an OS, preferably from the official docker images Bootstrap: docker From: centos:latest # Run post-install commands. Use them just like you would do within the targeted operating system %post yum update && apt install wget build-essential
- Copy files into the container.
%files source/path/to/file.txt target/path/to/file.txt
Troubleshooting
sudo: singularity: command not found If this error occures, sudo may be missing a path to singularitys installation directory. With sudo visodu this can be changed by adding the path to a specific line:
Just add :/usr/local/bin to the line containing secure_path so it looks like this: Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
#######WORK IN PROGRESS#######
If you want to find out more about Singularity on the HPC Cluster, you can use the command
module spider Singularity
This will show you basic informations e.g. a short description, and the currently installed version.
To load the desired version of the module, use the command, e.g.
module load hpc-env/6.4 module load Singularity
Always remember: this command is case sensitive!
To get familiar with the commands, and options available for Singularity, you can use the help function:
singularity --help
Documentation
The developers offer a detailed website with further information, and a Quick Stard Guide.