As more and more Swarthmore researchers create sophisticated computer programs for simulation and analysis, it can become harder to manage the code. Getting a new computer configured with the proper environment can be difficult and the challenges are multiplied when trying to running the same code on several student and lab computers, a local server, or even a supercomputer. Operating systems and programming languages and libraries change over time, so code that worked last year may not work this year. This year, Swarthmore ITS has been working to figure out how to:
- Easily get students up to speed with working on existing code
- Run the same code on a laptop, department workstation, or supercomputer
- Run the same code for years into the future
Containers
A software container is a way to run an application and its dependencies in many different computing environments. It is possible to configure a container with your code and run it on your laptop and then send the container to a colleague or even a supercomputer and execute the same code. Because the container also contains the software dependencies, it can continue to be run using the same version of the programming language, libraries, and operating system for years into the future. Your collaborators and student researchers can easily get started working on code without worrying about configuring their individual systems with specific dependencies.
The two main types of containers of interest to most researchers are Docker and Singularity. Docker is the most popular containerization system and is used widely in the software industry. It is easy to download and install on most operating systems. Singularity is a similar system aimed at high performance computing. It is possible to automatically translate a Docker container to a Singularity container.
Learning more
For more information, check out Docker’s “What is a Container” page.
A recent XSEDE presentation called “How to Install Literally Anything: A Practical Guide to Singularity” by Brian DuSell is a good introduction to getting started with Singularity: Slides and Recording
Let us know how we can help
ITS has been using containers to assist with our own development efforts. If you’d like to learn more about how containers might help your research, please get in touch with Andrew Ruether (aruethe2, x8254).