Containers
- Containers are packages containing all the elements needed to run a process in any computing environment.
- This allows for the portability of code between different computers, from your laptop to a Nimbus instance or Topaz.
- They also support the reproducibility of results that depend on specific software versions.
- Loosely speaking, a container replaces the ‘userland’ of the host operating system with ‘userland’ on another operating system - which has access to the devices and computes the power of the host device.
- There is some performance overhead associated with containers.
- But for short-to-medium-term projects (like an internship!) time saved troubleshooting is well worth the tradeoff.