Apptainer
Apptainer and Containers
Apptainer is the open-source fork of Singularity, a container platform created for high-performance and high-throughput computing environments. It is available through the tacc-apptainer module on Vista, and is currently at version 1.4.1 as of this writing (December 2025). Container images, or .sif files, can either be pulled from a remote hub or copied onto the system for use (see the Storing and Moving Data section).
Due to security concerns on HPC systems like Vista, users cannot be given root or sudo access to the system. Therefore, Apptainer containers cannot be built on the system; the recommendation is to develop them locally, then upload them to Vista. For the same reason, Docker is not available at all on Vista, because it unavoidably requires root access to the system.
However, Apptainer gives you the ability to pull a Docker container from an online repository such as Docker Hub and convert it automatically to a .sif file so you can run it. (TACC actually recommends incorporating Docker and Docker Hub into your workflow if you build your own containers.) Note, if different versions of a particular Docker container will be needed over time, then you may want to pay attention to the recommended best practices when converting it to an Apptainer container to run on Vista.
Note that Vista’s login and compute nodes use NVIDIA Grace CPUs based on the ARM architecture. When building containers locally, make sure to target the linux/arm64 platform.
A great starting point for working with Singularity/Apptainer on Vista is TACC's documentation from the Containers @ TACC Workshop. If you are totally unfamiliar with Apptainer, the official documentation has a lot of resources to help you get started.
Apptainer Short Exercise
Here is a short exercise on using Apptainer on Vista, which will use some of the techniques covered in Running Jobs, a topic that comes later in the roadmap. It's recommended that you finish the entire roadmap before trying this exercise.
Apptainer cannot be run on login nodes, so a compute node or an interactive node is required.
Load the Apptainer module and navigate to the $SCRATCH directory, where file system quotas are much less restrictive (some container images can be quite large).
Pull the official Python container from Docker Hub. Docker images are in OCI image format, but apptainer pull silently translates Docker Images to the compatible image format SIF.
Run a simple command to check the Python version. If it's successful, the most recent version of Python should be printed out.
Similarly, you can run an Apptainer container in a job script. In the example script below, the apptainer exec command automatically runs a container image downloaded from Docker Hub and executes pip list in it. Apptainer first searches in its cache for the container image; if the image is not found in the cache, then Apptainer automatically pulls the container image and converts it to SIF format. Apptainer then runs the container and executes the specified command in it.
When running programs that require access to GPUs from a container, use the --nv flag with apptainer exec on a GPU node to expose the GPUs to the programs inside the container, such as CUDA and PyTorch applications.
CVW material development is supported by NSF OAC awards 1854828, 2321040, 2323116 (UT Austin) and 2005506 (Indiana University)