The use of containers, like Docker, could substantially reduce the effort required to create and validate new software product releases, since one build could be suitable for use on both grid machines (both FermiGrid and OSG) as well as any machine capable of running the Docker container.
Docker provides a means of delivering common, standard software releases using containers. With Docker technology, these containers can then be run on a variety of operating system flavors without change. Early in 2016, we produced a series of Docker images, layered to reflect the dependencies of the software products that we use, ending at an experiment-specific release. Two final images were published on DockerHub for testing: a MicroBooNE uboonecode release (v4.31.00) and a ROOT 6 art release configured for development with a study package (v1.18.03). Both of these images were deployed and tested with simulation and development workflows on local cluster nodes, our laptops and on NERSC Cori Phase I (HPC center).
These tests exercised an important feature of reading from and writing directly from the image running on a compute node to the externally mounted file systems. They also demonstrated running parts of the MicroBooNE production MC workflow on a state-of-art, previously inaccessible, high-capacity HPC center at NERSC – without porting any software. The results are available in our report and show no measurable performance degradation.
Our next step is to demonstrate scaling to greater than 50K cores for a MicroBooNE MC production run with HEP Cloud managing the job submission and data handling.
– James B Kowalkowski