icaoberg / Container_Tutorial

Deep dive into containerizing scientific apps.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

XCRI Presents: Deep Dive into Constructing Containers for Scientific Computing and Gateways

This repository contains a collection of slides, exercises, and files for the Container Tutorial presented at various conferences and other venues. Below is an abstract of what the Tutorial covers and descriptions for each event. A directory exists for most events we have presented at, with some descriptions of how we presented at the event below.

Abstract

In recent years, using containers has been rapidly gaining traction as a solution to lower the barriers to using more software on HPC and cloud resources. However, significant barriers still exist to actually doing this in practice, particularly for well-established community codes which expect to run on a particular operating system version or resource. Additional barriers exist for researchers unfamiliar with containerization technologies. While many beginner tutorials are available for building containers, they often stop short of covering the complexities that can arise when containerizing scientific computing software. The goal of this full-day tutorial is to demonstrate and work through building and running non-trivial containers with users. We will containerize community scientific software, exhibit how to share with a larger community via a container registry, and then run on a completely separate HPC resource, with and without the use of a Science Gateway. The subject matter will be approachable for intermediate to advanced users, and is expected to be of interest to a diverse audience including researchers, support staff, and teams building science gateways.

SGCI 2021

Details coming soon.

Gateways2020

The tutorial was presented at Gateways 2020 as a full day (~8 hrs) in total split up across 2 days. The materials in the Gateways2020 directory are organized in accordance with the schedule of events at the conference, as detailed in the list below. Supplemental materials, such as Dockerfiles and Exercise instructions, have been included as well.

Day 1

Part 1 (1 hr 30 min)

  1. Introduction to Containers by Jeremy Fischer, Indiana University

    • Discussion of how containers can help Gateways
    • What is Docker?
    • Docker Hub
    • What is Singularity?
    • SingularityHub
    • Differences / relationship to each other
  2. Environment Introduction by Eric Coulter, Indiana University

    • Distributed login credentials for tutorial resources (not available outside of conference attendance)
    • Overview of container development environment
  3. Simple (Docker) Container Creation by Sanjana Sudarshan, Indiana University

    • Build via Dockerfile
    • Exploring Dockerfile structure/conventions
    • Container examples
  4. Exercise - Docker Build by Stephen Bird, Indiana University

    • Build simple Docker container

Part 2 (1 hr 30 min)

  1. Singularity Containers by Eric Coulter, Indiana University

    • Definition Files
    • Creating Singularity containers (from scratch)
    • Singularity user environment
  2. Docker To Singularity Conversion by Peter Vaillancourt, Cornell University

    • Best Practices for conversion
    • Example conversion
  3. Exercise - Singularity by Eric Coulter, Indiana University

  4. Gateways Tie-in by Suresh Marru, Indiana University

    • Overview of components in a Gateway lifecycle
    • Big picture in a gateways context
    • Discuss Part 4 Bucket choice

Day 2

Part 3 (1 hr 30 min)

  1. Open Q&A by Jeremy Fischer, Indiana University

    • Catchup and unresolved questions
  2. Exercise - MATLAB Container Build by Stephen Bird, Indiana University

  3. Best Practices & Advanced Topics by Peter Vaillancourt, Cornell University

    • Lifecycle of Containers
    • Development vs. Production
    • Reducing container sizes
    • Data management
    • Reproducibility
    • Security
    • Container Orchestration

Part 4 (1 hr 30 min)

  1. Containers for Gateways with Exercises by Suresh Marru, Indiana University

    • Intro to Gateways
    • Sign in to a gateway and run a pre-packaged containerized application with pre-provided inputs
    • Execute applications with user provided input files and plot outputs
    • Add a Containerized application to the Gateway
    • Goals to Cover:
      • What is a Gateway for?
      • What features do Gateways add when using containers?
      • How can Gateways now enable the community with these containers?
      • Run/provide your app via a gateway!
  2. Bucket of Topics (Open to Audience Input) by Eric Coulter and Suresh Marru, Indiana University

    • Gateway Hosting
    • Container Orchestration and management
    • CI/CD Overview (Code -> Gateways pipelines)
    • Container Registries (Building or usage of public registries)
    • Decisions about container vs. host for software/dependency locality

PEARC20

All tutorials at PEARC20 were shortened to half-day (~4 hrs), so the resulting tutorial is shorter than our planned full-day (~8 hrs). If you are interested in the full-day tutorial, we presented it at Gateways2020 and the materials are shared here also. The materials in the PEARC20 directory have been organized in order of how they were originally presented:

  1. Introduction to Containers by Jeremy Fischer, Indiana University
  2. Simple Container Creation by Sanjana Sudarshan, Indiana University
  3. Docker to Singularity Conversion by Peter Vaillancourt, Cornell University
  4. Exercise 1 - Build, Share, and Run a Container by Eric Coulter, Indiana University
  5. Docker MATLAB Runtime Container by Stephen Bird, Indiana University
  6. Containerization: Best Practices and Advanced Topics by Peter Vaillancourt
  7. Science Gateways by Suresh Marru, Indiana University

Supplemental materials, such as Dockerfiles and Exercise instructions, have been included as well.

Questions?

If you have Questions, please contact us via help@xsede.org with XCRI in the subject line.

About

Deep dive into containerizing scientific apps.


Languages

Language:Python 47.2%Language:Shell 42.8%Language:Dockerfile 10.0%