IntroductionWorking with containersWhy Apptainer/Singularity?Apptainer vs SingularityDocumentation


  • “Apptainer/Singularity is a container platform designed by and for scientists.”
  • “Single-file based container images facilitates the distribution.”
  • “Secure. User inside the container = user outside.”

Containers and ImagesThe Apptainer Command Line InterfaceDownloading ImagesRunning Containers


  • Use singularity --version to know what you are using and to communicate it if asking for support
  • “A container can be started from a local .sif or directly with the URL of the image.”
  • “Apptainer is also compatible with Docker images, providing access to the large collection of images hosted by Docker Hub.”
  • Get a shell inside of your container with apptainer shell <path/URL to image>
  • Execute a command inside of your container with apptainer exec <path/URL> <command>
  • Bind outside directories with --bind

Coffee break!


Building Containers


  • “The command build is the basic tool for the creation of containers.”
  • “A sandbox is a writable directory where containers can be built interactively.”
  • “Superuser permissions are required to build containers if you need to install packages or manipulate the operating system.”
  • “Use interactive builds only for development and tests, use definition files for production or publicly distributed containers.”

Containers from definition files


  • “An Apptainer definition file provides an easy way to build and deploy containers.”

Coffee break!


Sharing files between host and container


  • “Bind mounts allow reading and writing files within the container.”
  • “In Apptainer, you have same owner and permissions for files inside and outside the container.”
  • “Some paths are mounted by default by Apptainer.”
  • “Additional directories to bind can be defined using the --bind option or the environment variable $SINGULARITY_BIND.”

Apptainer/Singularity instances


  • Instances allow to setup services via Apptainer images or definition files.
  • Code provided in Jupyter notebooks can be accompanied by a Apptainer/Singularity image with the environment needed for its execution, ensuring the reproducibility of the results.

Bonus Episode: Building and deploying an Apptainer container to Github Packages


  •  Python packages can be installed in apptainer images along with ubuntu packages.
  •  It is possible to publish and share apptainer images over github packages.