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.