Singularity
This is not a complete article: This is a draft, a work in progress that is intended to be published into an article, which may or may not be ready for inclusion in the main wiki. It should not necessarily be considered factual or authoritative.
Singularity is an application containerization solution for High-Performance Computing (HPC). The goal of Singularity is to allow for "mobility of computing": an application containerized on one Linux system should be able to run on another system, as it is, and without the need to reconcile software dependencies and Linux version differences between the source and target systems. One of the main benefits of Singularity is that containers are executed as user and can have access to local and network filesystems.
You can create containers and install and setup software in them on systems where you have root access (e.g. your laptop or a cloud VM). Once you have created your singularity container, you can copy it to an HPC cluster such as Cedar or Graham and run your container as a user on that system.
For more information about singularity see [1]
A good place to find more images to use with singularity is: [2] e.g. search for ubuntu, and then you can create a new singularity container with a given Ubuntu image with:
$ singularity create my-container.img
$ singularity import my-container.img docker://ubuntu:16.10
or in one step
$ singularity pull -n my-container.img docker://ubuntu:16.10
if the docker image name and tag are ubuntu
and 16.10
for example. It is also likely if installing software that you will want larger than the default image. The size of the image can be specified with the -s
option, e.g. -s 4096
to specify that the image should be 4096 MB or 4G.
See also: