Run-Time

Modified

November 10, 2023

Abstract

From the user perspective a containerized application environment offers the freedom to select any Linux distribution of your choice to build the container image. Furthermore the user can install any package or software required. Containers provide a high level of customization down to a very specific collection of compliers, libraries and other tools in any desired version. But this freedom of choice comes with the requirement to the user to support a containerized application environment self-reliant. This chapter provides an over how to work with containers on the compute cluster.

Tip

User which do not want to use a custom container should refer to the Virtual Application Environments (VAEs) for more information.

Submit Node

Submit Node CRE Platform Support Until
virgo.hpc.gsi.de Apptainer RockyLinux TBD

The cluster can execute any number of containers. Users build containers will be treated as black-boxes by the cluster support, hence any container internals are under the responsibility of the user. The cluster uses Apptainer 1 as Container Run-time Engine (CRE), which is a container technology designed to support scientific computing. Login to virgo.hpc.gsi.de to access the host environment including the command-line interface to the CRE.

Note that the CRE version is subject to change depending on the necessities of the cluster. This includes upgrades to newer versions due to security concerns as well as requirements in supporting the VAEs. We do not guarantee any backwards compatibility!

A detailed introduction to the functionality of Apptainer is described in the command line section of the Apptainer User Guide 2. Examples in the following will use these environment variables to define common paths:

Environment

Variable File Suffix Description
APPTAINER_DEFINITIONS .def Definition Files 3
APPTAINER_CONTAINERS .sif Containers Images 4

In order to use containers on the cluster store them on shared storage, i.e.:

# path to the container artifacts on shared storage
export APPTAINER_CONTAINERS=$LUSTRE_HOME/containers
export APPTAINER_DEFINITIONS=$APPTAINER_CONTAINERS/definitions

Concerning the compatibility of Apptainer with Singularity 5:

  • Default metadata within SIF images and their filesystems will retain the singularity name without change. This will ensure that containers built with Apptainer will continue to work with installations of Singularity.
  • Apptainer respects environment variables with the SINGULARITY_ and SINGULARITYENV_ prefixes when their respective APPTAINER_ and APPTAINERENV_ counterparts are not set.
  • Apptainer will look for a ~/.singularity directory when the ~/.apptainer directory is being created and will migrate user configuration files and keyrings automatically.

Footnotes

  1. Apptainer Documentation
    http://apptainer.org/docs/↩︎

  2. https://apptainer.org/docs/user/main/↩︎

  3. Apptainer User Guide - Definition Files
    http://apptainer.org/docs/user/main/definition_files.html↩︎

  4. Apptainer User Guide - Build a Container
    http://apptainer.org/docs/user/main/build_a_container.html↩︎

  5. Apptainer User Guide - Singularity Compatibility
    https://apptainer.org/docs/user/main/singularity_compatibility.html↩︎