# NEIC AHM containers ###### tags: `NeIC` 90 min Total 00:00 - 00:15 : General intro on containers 00:16 - 00:45 : Installing your own application in a containers 00:46 - 00:51 : Break 00:52 - 01:10 : Running your application in a Docker container 01:10 - 01:30 : Running your application with Singularity (on HPC) ## Presenters and helpers - Abdulrahman Azab (Presenter) - Jean Iaquinta (Helper) - Sabry Razick (Helper) - Send an invitation to all those registered to ask for additional helpers ## Abstract A container *image* is a standalone, executable package which includes everything needed to run an application: source code, compilers, libraries, etc. Images become *containers* at runtime, when they run on a container engine (like Docker, Singularity, etc.). Containers provide a consistent software environment (BYOS = Bring Your Own Software), and the very same container image can be used on different infrastructures, from personal computer to cloud and HPC, thereby drastically reducing time for porting (i.e., your application can literally be up-and-running on a new machine *within minutes*). *Docker* is probably one of the most popular platforms for creating and distributing container images. It is relatively easy to install (especially on Linux machines) and well documented. Docker works well for local or private resources, and it is great to develop and share (Docker-hub), however it is not appropriate for *multi-user environments* like HPCs. *Singularity* exhibits several features which make it more suitable for use on HPC, and in particular there is no privilege escalation inside Singularity containers (user outside == user inside), therefore it is the container engine of choice for most HPC centers. **In this session we will introduce containers and benefits of installing your own application in a container (no need to wait for system administrators to install particular software or libraries, portability, reproducible research, etc.). We will take a real world example (*Bowtie*, a software package commonly used for sequence alignment and sequence analysis in bioinformatics) and show how to execute it with Docker (typically on a personal computer or on a Virtual Machine), then convert it to Singularity and run it on a HPC (with multiple nodes).** *This session is aimed at people who have an interest in containers but do not necessarily know where/how to get started and would like to focus on science instead of wasting time to sort-out porting and software dependencies. There will be a need for "helpers" (not necessarily container experts) for the hands-on, therefore please let us know if you are available so that we can provide access to the training material in advance.* ------------------------------- ## Container workshop ## Option 1 What is a container - When do we need one This workshop is for very beginners who are interested in knowing what container technology is. We will introduce the concepts followed by a hands-on session. For the hands-on session we will use publicly available training environments like Google console or https://training.play-with-docker.com/, so participants are not expected to install any software on their laptops. Topics covered What is a container ? When you might need to use one How to find a container with a specific software How to use it hands-on, using a container ## Option 2: One specific advnaced use case How to get a specific container image and modify for your need. ## Option3 : Real world application How to use containers, not just Hello-world. when you are on a system where you can not install anything, how to use a container to get access to the software you need.