Singularity Nomad Task Driver Plugins: Rootless Containers for Enterprise High Performance Computing

Singularity containers are specialized for HPC and machine learning. Hear about the first community contributed task driver that was built for Nomad 0.9+.


  • Eduardo Arango
    Eduardo ArangoSoftware Engineer, Sylabs Inc

Software containers continue to evolve at a rapid pace. Two distinct classes of open source container solution have appeared - one that chiefly supports microservices, and one that also supports batch, interactive, and multi-user environments for use cases such as HPC, modeling, and machine learning.

In the latter class, Singularity has emerged as the leading solution, with a strong and vibrant open source community of users and contributors. At runtime, Singularity blurs the lines between the container and the host system allowing users to read and write persistent data and leverage hardware like GPUs and Infiniband with ease.

The Singularity security model is also unique among container solutions. Singularity blocks privilege escalation within the container—if a user wants to be root inside the container, it must be root outside the container. This usage paradigm mitigates many of the security concerns that exist with containers on multi-tenant shared resources. You can directly call programs inside the container from outside the container, fully incorporating pipes, standard IO, filesystem access, X11, and MPI.

The Singularity runtime facilitates cohesion between applications that require direct integration with the host operating system (e.g., GPUs, infiniband, other specialized interconnects), and the services that require isolation when making use of host resources (e.g., network or CPU utilization).

HashiCorp Nomad’s performance characteristics and scalability make it well-suited to orchestrate high-performance analytical workloads. Nomad’s task driver subsystem allows users to leverage these characteristics for both Docker-based and legacy or non-containerized workloads. The task driver subsystem was refactored in the 0.9 release to enable users to contribute new task drivers as external plugins. The Singularity task driver plugin for Nomad is the first such community contribution! This integration enables data scientists and other users to run analytical workloads that combine the benefits of the two systems. The v1.0-alpha release of the Singularity plugin for Nomad is now available.

More resources like this one