What to learn next
We recommend reading the chapter on testing, and then the chapter on continuous integration. Note that the chapter on version control is a prerequisite for the chapter on continuous integration. The open research chapter also contains further information on sharing research reproducibly.
Further reading
The Docker documentation contains a lot of information about containers in general.
Definitions/glossary
Binder: A web-based service which allows users to upload and share fully-functioning versions of their projects in an environment they define.
Computational environment: Features of a computer which can impact the behaviour of work done on it, such as its operating system, what software it has installed, and what versions of software packages are installed.
Conda: A commonly used package management system.
Container: Lightweight files that can encapsulate and entire computational environment including its operating system, customised settings, software and files.
Dockerfile: A file used for creating Docker images
Image: Files used for generating containers.
Package management system: A tool for installing, managing, and uninstalling software packages including specific versions.
Virtual machine: A simulated computer that can encapsulate and entire computational environment including its operating system, customised settings, software and files.
YAML: A human readable/writable markup language which used by many projects for configuration files.
Bibliography
Materials in the "what is a computational environment" section
- semantic versioning Creative Commons - CC BY 3.0
Materials in the "how this will help you/why this is useful" section
- A. Brinckman, et al., Computing environments for reproducibility: Capturing the "Whole Tale", Future Generation Computer Systems (2018), https://doi.org/10.1016/j.future.2017.12.029 Attribution 4.0 International (CC BY 4.0)
- Paper presenting singularity CC0 1.0 Universal (CC0 1.0)
Materials in the summary of ways to capture computational environments section
- Paper presenting singularity CC0 1.0 Universal (CC0 1.0)
Materials in the package management systems section
- Package Managers Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
- Talk by Will Furnass on Conda Attribution-NonCommercial-ShareAlike 4.0 International
Materials in the YAML files section
Materials in the Binder section
- Binder illustration Permission to use granted by Juliette Taka, Logilab and the OpenDreamKit project.
- mybinder docs intro BSD 3-Clause
- Original zero to Binder tutorial BSD 3-Clause
- Sarah Gibson's zero to Binder MIT
- Zero to Binder BSD 3-Clause
Materials in the virtual machines section
Materials in the containers section
- What is docker? CC BY-SA 4.0
- What are containers? CC BY-SA 4.0
- Docker carpentry Creative Commons Attribution 4.0
- Geohackweek tutorial Creative Commons Attribution 3.0 Unported