Skip to content

Apptainer containers

Singularity renamed to Apptainer

The Singularity containerisation project was renamed to Apptainer. In Apptainer version 1.1.0, the singularity command is a symlink to apptainer, for backward compatibility. In future releases, this symlink may not be present, so we highly recommend to start using the apptainer command when interfacing with Apptainer containers.

Linux containers are self-contained execution environments that share a Linux kernel with the host, but have isolated resources for CPU, I/O, memory, etc. A container can run a completely different Linux environment, without the overhead required by virtual machines.

Benefits of containers

  • Reproducible science - containers can include an application and its dependencies, and be run on other systems where Apptainer is installed.
  • Version independent - run code designed for other versions of Linux e.g. Ubuntu packages on a CentOS system.
  • Self-contained - allow isolation of complicated application installs.
  • Containers may be build in user space, without root privileges.

Apptainer

Apptainer Logo Apptainer is a popular Open Source container solution designed for HPC. Unlike other container solutions such as Docker, it allows utilisation of GPUs and Infiniband interconnects for MPI jobs, and does not allow privilege escalation within a container, which would compromise the security in a multi-user environment with a shared filesystem.

After researching the options, and running a pilot phase with users, Apptainer was selected for the Apocrita HPC cluster.

Using Apptainer on Apocrita

Apptainer is available as a system package on Apocrita. We may update the version of Apptainer installed on the cluster to address security vulnerabilities or to provide extra features as they become available.

Resources

Containers built by ITS Research are stored in /data/containers and are supported in a similar way to the globally available supported applications. Applications installed within Apptainer containers may also be provided as a module to abstract the container invocation commands. See the Apptainer usage page for more information about containers provided as modules.

If you maintain your own container definition files, we encourage you to store them in a version control system such as Github Enterprise.

Further reading

  • Apptainer website
  • Running apptainer help and apptainer help CMD (replace CMD with a Apptainer command, such as run)
  • Viewing the "apptainer" manual page