Containers provide an efficient way to set up and tear down a prescribed environment in which an application can be executed. Conceptually, containers can be thought of as lightweight virtual machines (VMs) where your application is executed in a separate environment from a host system. Your whole execution environment (operating system, file system, libraries, packages, scripts, application, etc.) can be put in a container and then run on a host system. However, containers differ from VMs in a number of ways. The most significant ones are that a container shares the kernel with the host system, and that a container does not require a hypervisor (an entity that creates and oversees a VM). These differences are important in the HPC world and other environments where performance is paramount. Even if the hypervisor for a VM is implemented in hardware to minimize performance overhead, you probably do not want to have your application slowed by an additional operating system kernel running under the host system’s kernel. Containers can also be started and stopped in much less time and require much less memory than a VM which leaves more time and memory for your application to run on the host system.
In related news, the HPC User Forum has posted their Agendas for upcoming meetings in Europe:
- GENCI will host the HPC User Forum in ParisOct. 12-13. The Agenda includes speakers from Airbus, GENCI, Renault, and NASA. The meeting is free to attend. Register now.
- LRZ will host the HPC User Forum in Munich Oct 15-16. The Agenda includes speakers from LRZ, CSCS, DKRZ, Paypal, and the Gauss Centre for Supercomputing. The meeting is free to attend. Register now.