Skip to content

๐Ÿ“– Containers

Containers are one of the essential tools in the quest for computational reproducibility. See containers for reproducibility for a discussion of what containers can and cannot do in the context of reproducible research.

There are several popular container-based technologies, which can be grouped into two categories: those that use container images, and those that construct containers on the fly from software packages.

Image-based containers

  • Docker is a container platform developed for software deployment in cloud computing. It is extremely popular outside of research, and therefore has very complete tools and documentation. However, it is not perfectly adapted for use on personal computers, and almost never available on HPC sytems for security reasons.

Tutorials: - one - two

Other references: - one - two

  • Apptainer (formerly known as Singularity) is a container platform developed specifically for high-performance computing. It is also more convenient to use on personal computers than Docker, but offers less isolation (and thus fewer reproducibility guarantees) than Docker.

Tutorials: - one - two

Other references: - one - two

Package-based containers

  • Guix is a package manager for Linux that can create containers on the fly from a list of packages.

For more information: - Invoking guix shell in the Guix manual (search for "container")