This is an old revision of the document!


Container is an executable environment that package up pieces of software in a way it is portable and reproducible. You can build a container on your personal laptop, copy it to the high-performance cluster (like MOGON 2) and execute it there. The next day you may decide to run the same container at another computational facility. Instead of compiling a code for some different cluster environment (different modules, different filesystems, etc.) from scratch, you just take the same container you've created the other day on your laptop. That is cool, isn't it? 8-)

Citing the official documentation of Singularity:

Singularity was created to run complex applications on HPC clusters in a simple, portable, and reproducible way.

It is an open-source project initiated at the Lawrence Berkeley National Laboratory. It is focused on:

  • Integration over isolation by default. Easily make use of GPUs, high speed networks, parallel filesystems on a cluster.
  • Portability and reproducibility of computations. The single file SIF container format is easy to transport and share.
  • A simple, effective security model. You are the same user inside a container as outside, and cannot gain additional privilege on the host system by default.
$ module load tools/Singularity/3.6.4-Go-1.14.1

Interactive usage

You can use Singularity in your interactive job. After starting the job, ssh to the dedicated nodes and change into the folder with your Singularity container. Most of the time, it has extension sif, so your container may be called my-fluffy-cow.sif. To start the shell inside this container, simply execute

$ singularity shell my-fluffy-cow.sif

Cross your fingers and if everything goes right, your prompt will tell you that you are inside the container now.

Usage as a "black box"

You want just to check your container quick? Or maybe execute a specific command as a part of your data analysis? In this case, you don't need to start a shell inside of the container. You can rather execute a specific command inside of the container. Let's take our beloved my-fluffy-cow.sif container.

$ singularity exec my-fluffy-cow.sif pwd

The part of the command following the name of the container will be executed in the container (in this case the working directory of the container will be printed onto the screen). After its successful execution your prompt will return to the cluster shell.

Other use cases are described in the official documentation here.


  • start/software/containers/singularity.1610403190.txt.gz
  • Last modified: 2021/01/11 23:13
  • by ntretyak