A container is like a packaged, portable environment that you can run on your computer. For the purposes of research computing, this comes down to two big players:

Docker

Docker is the enterprise, well known linux container, the first one that really changed the world by exposing different parts of the linux kernel via an easy to use API. You can find a lot of containers on Docker Hub, and there are many well-known scientific containers along with services (think databases, web servers, job queues) that have all been “Dockerized.” You can read their getting started guide, or just browse some of the scientific biocontainers that are driving reproducible science.

Singularity

Singularity is a linux container that you can run safely and securely on a shared resource. You can read about how it came about as an open source effort in this paper, or just jump into the docs.

We will be building and using both Docker and Singularity images. Docker works really well, but it won’t work for you if you aren’t the root user, such as on your local research cluster. Singularity can help here.

To get started, let’s build containers to use dcmtk, a nice set of tools for working with and using dicom images.