Singularity: Getting started
- Singularity is another container platform and it is often used in cluster/HPC/research environments.
 - Singularity has a different security model to other container platforms, one of the key reasons that it is well suited to HPC and cluster environments.
 - Singularity has its own container image format (SIF).
 - The 
singularitycommand can be used to pull images from Singularity Hub and run a container from an image file. 
The Singularity cache
- Singularity caches downloaded images so that an unchanged image
isn’t downloaded again when it is requested using the
singularity pullcommand. - You can free up space in the cache by removing all locally cached images or by specifying individual images to remove.
 
Using Singularity containers to run commands
- The 
singularity execis an alternative tosingularity runthat allows you to start a container running a specific command. - The 
singularity shellcommand can be used to start a container and run an interactive shell within it. 
Files in Singularity containers
- Your current directory and home directory are usually available by default in a container.
 - You have the same username and permissions in a container as on the host system.
 - You can specify additional host system directories to be available in the container.
 
Using Docker images with Singularity
- Singularity can start a container from a Docker image which can be pulled directly from Docker Hub.
 
Preparing to build Singularity images
- A Docker image is provided to run Singularity - this avoids the need to have a local Singularity installation on your system.
 - The Docker Singularity image can be used to build containers on Linux, macOS and Windows.
 - You can also run Singularity containers within the Docker Singularity image.
 
Building Singularity images
- Singularity definition files are used to define the build process and configuration for an image.
 - Singularity’s Docker container provides a way to build images on a platform where Singularity is not installed but Docker is available.
 - Existing images from remote registries such as Docker Hub and Singularity Hub can be used as a base for creating new Singularity images.
 
Running MPI parallel jobs using Singularity containers
- Singularity images containing MPI applications can be built on one platform and then run on another (e.g. an HPC cluster) if the two platforms have compatible MPI implementations.
 - When running an MPI application within a Singularity container, use the MPI executable on the host system to launch a Singularity container for each process.
 - Think about parallel application performance requirements and how where you build/run your image may affect that.