Difference between revisions of "Containers for CyberShake"

From SCECpedia
Jump to navigationJump to search
Line 11: Line 11:
 
Image Prework:
 
Image Prework:
 
Convert Sandbox Director to image file:  
 
Convert Sandbox Director to image file:  
sudo singularity build new-sif.sif myUbuntu
+
<code>sudo singularity build new-sif.sif myUbuntu</code>
 
imageName sandbox directory
 
imageName sandbox directory
  
Line 39: Line 39:
  
 
Install Singularity
 
Install Singularity
export VERSION=3.5.2 && # adjust this as necessary \
+
    <code>export VERSION=3.5.2 && # adjust this as necessary \
 
     wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \
 
     wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \
     tar -xzf singularity-${VERSION}.tar.gz && \
+
     tar -xzf singularity-${VERSION}.tar.gz && \</code>
 
     cd singularity
 
     cd singularity
  
 
Check if Singularity Works
 
Check if Singularity Works
git clone https://github.com/sylabs/singularity.git && \
+
    <code>git clone https://github.com/sylabs/singularity.git && \
 
     cd singularity && \
 
     cd singularity && \
     git checkout v3.5.2
+
     git checkout v3.5.2</code>
  
  
 
Get Image
 
Get Image
singularity pull <source>
+
singularity pull <source>*
 +
<code>singularity pull library://default/ubuntu:latest</code>
 +
*Sources include Singularity Container Library (library), Singularity Hub (shub) and Docker Hub (docker).
  
 
Execute Command in from Outside Container
 
Execute Command in from Outside Container
 
Singularity Commands
 
Singularity Commands
singularity exec myPythonContainer.sif cat /etc/lsb-release
+
<code>singularity exec myPythonContainer.sif cat /etc/lsb-release</code>
 
imageName command
 
imageName command
  
singularity exec myPythonContainer.sif python3 helloWorld.py
+
singularity exec image_name command
imageName command
+
<code>singularity exec myPythonContainer.sif python3 helloWorld.py</code>
  
Find Size:
+
Find Size of Container:
singularity cache list
+
<code>singularity cache list</code>
  
 
== Basic Singularity Commands ==
 
== Basic Singularity Commands ==

Revision as of 02:26, 7 August 2020

This page is to document the steps involved in enabling the CyberShake codebase to run in a container environment.

Selection of Containers

The available HPC Containers at the time of selection were Singularity, Charlie Cloud, and Shifter. Between the 3 of these container technologies, Singularity was widely adapted and had more open source tools. Because of this wide adaptation the module already existed in the Frontera system. Singularity has built-in support for different MPI libraries from OpenMPI, MPICH, IntelMPI to name a few. Shifter is highly reliant on MPICH ABI. This would require site-specific MPI libraries to be copied to the container at run time.

Setting up a serial container

(Explains the steps involved in building and running serial code in a container)

Image Prework: Convert Sandbox Director to image file: sudo singularity build new-sif.sif myUbuntu imageName sandbox directory

User Work: Install Dependencies sudo apt-get update && sudo apt-get install -y \

   build-essential \
   uuid-dev \
   libgpgme-dev \
   squashfs-tools \
   libseccomp-dev \
   wget \
   pkg-config \
   git \
   cryptsetup-bin

Download Go export VERSION=1.13.5 OS=linux ARCH=amd64 && \

   wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz && \
   sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz && \
   rm go$VERSION.$OS-$ARCH.tar.gz

Set Up Go echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \

   echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \
   source ~/.bashrc

Install Singularity

   export VERSION=3.5.2 && # adjust this as necessary \
   wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \
   tar -xzf singularity-${VERSION}.tar.gz && \
   cd singularity

Check if Singularity Works

   git clone https://github.com/sylabs/singularity.git && \
   cd singularity && \
   git checkout v3.5.2


Get Image singularity pull <source>* singularity pull library://default/ubuntu:latest

  • Sources include Singularity Container Library (library), Singularity Hub (shub) and Docker Hub (docker).

Execute Command in from Outside Container Singularity Commands singularity exec myPythonContainer.sif cat /etc/lsb-release imageName command

singularity exec image_name command singularity exec myPythonContainer.sif python3 helloWorld.py

Find Size of Container: singularity cache list

Basic Singularity Commands

Basic Singularity Commands Pull - pulls a container image from a remote source $ sudo singularity pull <remote source> <remote source> Singularity Container Services

   $ sudo singularity pull --name CONTAINER_NAME.sif library://USER/PULL_PATH:VERSION

Singularity Hub $ sudo singularity pull --name CONTAINER_NAME.sif shub://USER/PULL_PATH:VERSION (Note: the path only needs to match the pull card. please see the remote website for example.) Docker Hub $ sudo singularity build CONTAINER_NAME.sif docker://USER/PULL_PATH:VERSION (Note docker images have layers and it needs to be merged into 1 singularity image. For that to happen you MUST use: build)

Exec - executes an EXTERNAL COMMAND $ singularity exec IMAGE_NAME.sif EXTERNAL_COMMAND

Shell - shells into an existing container singularity shell IMAGE_NAME.sif

  • Note: Your home directory is mounted by default

Run - runs an image. Run is based on the Run Script parameters that were placed into the container when the image was built based the recipe $ singularity run IMAGE_NAME.sif

Build (BIG TO DO: Very important) $ singularity build IMAGE_NAME.sif <source> Sources include Another Image either docker or singularity Singularity definition file (use to be known as a recipe file), usually denoted with name.def

Note: You can shell into a docker UI - explore different containers without pulling or building $ singularity shell docker://ubuntu

Creating Definition Files: Workflow: Set up complex workflows with Recipe File: Alternatively- Sandbox Directory Prototype Final Container: sudo singularity build --sandbox ubuntu_s docker://ubuntu


Containers on Frontera

Serial Containers

Explain how you got serial containers running on Frontera.

MPI Containers

Explain how you got MPI containers running on Frontera.