SlideShare a Scribd company logo
Containers for Science and
High-Performance Computing
Dmitry Spodarets
Root Linux GlobalLogic Conference 2017
Who am I
Dmitry Spodarets
• Founder and CEO at FlyElephant
• PhD candidate at Odessa National University
• Lecturer at Odessa Polytechnic University
• Organizer of technical conferences about
Data Science, HPC, JS, Web Technologies …
Data ScienceRendering
Engineering
Simulation
Academia
FlyElephant
We automate Data Science and Engineering Simulation
and help teams to work efficiently.
Computing
resources
Ready-computing
infrastructure
Collaboration
& Sharing
Fast
Deployment
Expert
Community
Agenda
•Scientific tasks
•Computing resources
•High-Performance Computing
•Containers
•Singularity
•Conferences
Scientific tasks
Healthcare Financial RetailLife Sciences Manufacturing
Scientific Method
Computing resources
Computing resources
Computing resources
NVIDIA	DGX-1	Deep Learning Supercomputer
GPU Xeon Phi
FPGA
1080 vs Titan X vs K80 vs P100
0,25
8,8
0,3
10,1
2,9
8,7
5,3
10,6
0
2
4
6
8
10
12
FP32	(Single	precision) FP64	(Double	precision)
1080 Titan	X K80 P100
http://www.nvidia.com/
TFLOPS
Public Cloud
High-Performance Computing
and Supercomputer
Big tasks – big power
HPC
Sunway	TaihuLight / China
10,649,600 Cores
125,436	TFlop/s
HPC in the Cloud
Hybrid HPC
What about elastic environment?
Containers
Docker
Timeline of LXC Tools
http://kiwenlau.blogspot.com/2015/01/linux-container-technology-overview.html
Containers vs Virtual Machines
Docker (Dockerfile)
FROM registry.flyelephant.net/leap
MAINTAINER Dmitry Spodarets <d.spodarets@flyelephant.net>
RUN zypper ref && zypper -n in blender && zypper clean
Docker (build.sh)
#!/bin/bash
function docker_build {
docker build -t $1 ./$1;
docker tag $1 registry.flyelephant.net/$1
docker push registry.flyelephant.net/$1
docker rmi $1 registry.flyelephant.net/$1
}case $1 in
all)
for i in `cat build.list`; do
docker_build $i;
done
;;
*)
docker_build $1;;
esac
Docker Hub
Docker
1. docker images
2. docker run --memory 512m --cpus="2" --name mycont registry.flyelephant.net/tensorflow
3. docker exec -i -t mycont bash
4. docker ps
5. docker stats
6. docker stop CONTAINER ID
7. docker start CONTAINER ID
8. docker rm CONTAINER ID
Docker Machine
• Amazon Web Services
• Digital Ocean
• Exoscale
• Generic
• Google Compute Engine
• IBM Softlayer
• Microsoft Azure
• Microsoft Hyper-V
• OpenStack
• Oracle
• VirtualBox
• Rackspace
• VMware Fusion
• VMware v
• Cloud Air
• VMware vSphere
docker-machine create --driver azure --azure-subscription-id subscription-id --azure-
resource-group resourcename --azure-ssh-user user --azure-size machine-name
docker-machine ssh machine-name
But
Generally containers technologies
have been designed to solve a
single primary use case for the
enterprise:
micro-service virtualization
This is *NOT* the scientific or
HPC use case!
So… what is our use case?
Scientists are like Pirates, pillaging
for resources instead of booty!
We want to run our jobs. We want
to get results.
Containers for Science and High-Performance Computing
And when we find available resources, we need to
ensure application and environment compatibility.
This is where containers can be a perfect fit…
Our use-case and needs are very different from
enterprise!
For example, reproducibility is
of the utmost importance in
science.
Science that isn’t easily
reproducible is challenged
and sometimes
embarrassingly erased.
Software environments can
often be very difficult to
reproduce… Sometimes
impossible.
And as scientists, we need
reproducibility!
Containers for Science and High-Performance Computing
So why not just keep using Docker?
The good news:
You can! It works great for local and private resources. You can use
it to develop and share your work with others using Docker-hub.
The bad news:
If you ever need to scale beyond your local resources, it maybe a
dead end path! Docker, and other enterprise focused containers,
are not designed for, efficient or even compatible with traditional
HPC.
No HPC centers allow it!
Shifter vs Charlie Cloud vs Docker vs Singularity
Singularity
Singularity
• Project lead: Gregory M. Kurtzer
• Sponsored by: HPC @ LBNL
• URL: http://singularity.lbl.gov
Singularity - Containers for Science
• First public release in April 2016, followed by a massive uptake
• HPC Wire Editor’s choice: Top Technologies to Watch for 2017
• Simple integration with resource managers, InfiniBand, GPUs, MPI, file
systems, and supports multiple architectures (x86_64, PPC, ARM, etc..)
• Limits user’s privileges (inside user == outside user)
• No root owned container daemon
• Network images are supported via URIs and all require local caching:
○ docker:// - This will pull a container from Docker Hub
○ http://, https:// - This will pull an image or tarball from the URL, cache and run it
○ shub:// - Pull an image from the Singularity Hub
Singularity: access and privilege
User contexts are always maintained when the container is
launched.
When launched by a particular user, the programs inside
will be running as that user. Any escalation pathways inside
the container are blocked. Thus…
If you want to be root inside the container,
you must first be root outside of the container!
Singularity: access and privilege
[m31@centos7-x64 ~]$ whoami
m31
[m31@centos7-x64 ~]$ singularity shell /tmp/debian.img
Singularity: Invoking an interactive shell within container…
Singularity.debian.img> whoami
m31
Singularity.debian.img> sudo whoami
sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file
system without root privileges?
Singularity.debian.img> ls -l /usr/bin/sudo
-rwsr-xr-x. 1 root root 136808 Aug 17 13:20 /usr/bin/sudo
Singularity.debian.img> exit
[m31@centos7-x64 ~]$ sudo singularity shell /tmp/debian.img
Singularity: Invoking an interactive shell within container...
Singularity.debian.img> whoami
root
Singularity.debian.img> exit
Singularity: Workflow
Singularity: Creating the container
$ sudo singularity create --size 2048 /tmp/Centos-7.img
Singularity: Bootstrapping the container
$ sudo singularity bootstrap /tmp/Centos-7.img centos.def
The container is ready
$ singularity shell /tmp/Centos-7.img
Singularity: Invoking an interactive shell within container...
Singularity.Centos-7.img> cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
Singularity: Bootstrap definition - RedHat/YUM
$ cat examples/centos.def
BootStrap: yum
OSVersion: 7
MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/$basearch/
Include: yum
%runscript
echo "This is what happens when you run the container..."
%post
echo "Hello from inside the container"
yum -y install vim-minimal
● The header defines the core operating system
● %runscript: What should this container do when “run” (singularity run, or ./container.img)
● %post: After the core operating system has been built, this gets executed inside the new container
Singularity: Bootstrap definition - Debian/Ubuntu
$ cat examples/debian.def
BootStrap: debootstrap
OSVersion: stable
MirrorURL: http://ftp.us.debian.org/debian/
%runscript
echo "This is what happens when you run the container..."
%post
echo "Hello from inside the container"
apt-get update
apt-get -y install vim
Singularity: Bootstrap definition - OpenSuse
$ cat examples/opensuse.def
BootStrap: zypper
OSVersion: 42.2
MirrorURL: http://download.opensuse.org/distribution/leap/%{OSVERSION}/repo/oss/
%runscript
echo "This is what happens when you run the container..."
%post
echo "Hello from inside the container"
Usage Examples
$ python ./hello.py
Hello World: The Python version is 2.7.5
$ sudo singularity exec --writable /tmp/debian.img apt-get install python
…
$ singularity exec /tmp/debian.img python ./hello.py
Hello World: The Python version is 2.7.13
$ cat hello.py | singularity exec /tmp/debian.img python
Hello World: The Python version is 2.7.13
Usage Examples
$ mpirun singularity exec /tmp/Centos7-ompi.img /usr/bin/mpi_ring
Process 0 sending 10 to 1, tag 201 (4 processes in ring)
Process 0 sent to 1
Process 0 decremented value: 9
Process 0 decremented value: 8
Process 0 decremented value: 7
Process 0 decremented value: 6
Process 0 decremented value: 5
Process 0 decremented value: 4
Process 0 decremented value: 3
Process 0 decremented value: 2
Process 0 decremented value: 1
Process 0 decremented value: 0
Process 0 exiting
Process 1 exiting
Process 2 exiting
Process 3 exiting
Container Image types supported
● Local images supported:
○ Singularity 2.x default image format
○ SquashFS
○ Tarballs (requires caching)
○ Flat directories (chroots)
● Network images are supported via URIs and all require local caching:
○ docker:// - This will pull a container from Docker Hub
○ http://, https:// - This will pull an image or tarball from the URL, cache and run it
○ shub:// - Pull an image from the Singularity Hub … Wait, what?! Patience, all in due time!
Usage Examples
$ singularity exec docker://python:latest /usr/local/bin/python hello.py
library/python:latest
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:e41da2f0bac3da1769ecdac8b0f5df53c1db38603e39b9e261cafd10caf904de
Downloading layer: sha256:75ef15b2048b4cfb06c02f2180f4d89033d02c63f698672d2909b8c9878c4270
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:45b2a7e03e44b5ea7fad081537134c9cc725bddf94f9093b00e1fa8d8ebbcda1
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:52f3db4b5710849a53bc2eea0b6f0895c494d751c38c597404d805da82b3f37c
Downloading layer: sha256:76610ec20bf5892e24cebd4153c7668284aa1d1151b7c3b0c7d50c579aa5ce75
Downloading layer: sha256:fce5728aad85a763fe3c419db16885eb6f7a670a42824ea618414b8fb309ccde
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
Downloading layer: sha256:5040bd2983909aa8896b9932438c3f1479d25ae837a5f6220242a264d0221f2d
Hello World: The Python version is 3.6.0
Usage Examples
$ singularity exec docker://tensorflow/tensorflow python -m tensorflow.models.image.mnist.convolutional
tensorflow/tensorflow:latest
Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
...
Initialized!
Step 0 (epoch 0.00), 5.1 ms
Minibatch loss: 8.334, learning rate: 0.010000
Minibatch error: 85.9%
Validation error: 84.6%
Step 100 (epoch 0.12), 140.0 ms
Minibatch loss: 3.250, learning rate: 0.010000
Minibatch error: 6.2%
…
Step 8500 (epoch 9.89), 134.2 ms
Minibatch loss: 1.618, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 0.9%
Test error: 0.8%
Singularity Hub: Container Registry
Singularity Hub: Build/Import workflow
● Singularity bootstrap definition is
committed and pushed to a GitHub
repository (named ‘Singularity’)
● GitHub communicates with Singularity
Hub via a web hook, and it gets queued to
be built via continuous integration
● Once built the resulting product is stored
in Google Cloud and available to be
accessed
● The container will be archived and
can/should be cited in your scientific
publications so others can replicate and
leverage your work with:
$ singularity shell shub://$UNIQUE_ID
$ singularity run shub://$USER/$CONTAINER:$TAG
Sochat V.,	Prybol C,	Kurtzer GM.	Singularity	Hub:	Registry	for	Reproducible	Containers	(manuscript	in	progress)
Who are using Singularity?
Contributors to Singularity
singularity.lbl.gov
Twitter:	@SingularityApp
GitHub:	http://www.github.com/singularityware/singularity
Slack:	http://singularity-container.slack.com (email	me	for	invite)
Conferences
DS and HPC Conferences
• Data Science Lab
• May 13, Odessa, Ukraine
• http://www.datascience.in.ua/
• ISC HIGH PERFORMANCE
• June 18-22, Frankfurt, Germany
• http://www.isc-hpc.com/
• SC Conference
• November 12-17, Denver, Colorado, USA
• http://sc17.supercomputing.org/
Dmitry Spodarets
d.spodarets@flyelephant.net
www.flyelephant.net

More Related Content

PDF
Docker, Linux Containers, and Security: Does It Add Up?
PDF
Reproducibility of computational workflows is automated using continuous anal...
PDF
Deploying Hadoop-Based Bigdata Environments
PDF
Docker Belgium Meetup
PDF
Introducing Docker
PDF
The Common Debian Build System (CDBS)
PDF
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
PDF
Docker Online Meetup #3: Docker in Production
Docker, Linux Containers, and Security: Does It Add Up?
Reproducibility of computational workflows is automated using continuous anal...
Deploying Hadoop-Based Bigdata Environments
Docker Belgium Meetup
Introducing Docker
The Common Debian Build System (CDBS)
Cgroups, namespaces, and beyond: what are containers made from? (DockerCon Eu...
Docker Online Meetup #3: Docker in Production

What's hot (20)

PDF
Generator Tricks for Systems Programmers, v2.0
PDF
Build Your Private Cloud with Ezilla and Haduzilla
PDF
A Hands-on Introduction to Docker
PDF
olibc: Another C Library optimized for Embedded Linux
PDF
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
PDF
Understanding the Python GIL
PDF
Python Generator Hacking
PPTX
Docker Internals - Twilio talk November 14th, 2013
PDF
Docker composeで開発環境をメンバに配布せよ
PDF
Generators: The Final Frontier
DOCX
Hadoop 2.2.0 Multi-node cluster Installation on Ubuntu
PDF
In Search of the Perfect Global Interpreter Lock
PDF
An Introduction to Python Concurrency
PDF
Security module for php7 – Killing bugclasses and virtual-patching the rest! ...
PPTX
Docker and the Container Ecosystem
PDF
Introduction and Deep Dive Into Containerd
PDF
Hadoop 3.1.1 single node
PDF
The Lives of Others: Open-Source Development Practices Elsewhere
PDF
Drupalcamp es 2013 drupal with lxc docker and vagrant
PDF
Mastering Python 3 I/O
Generator Tricks for Systems Programmers, v2.0
Build Your Private Cloud with Ezilla and Haduzilla
A Hands-on Introduction to Docker
olibc: Another C Library optimized for Embedded Linux
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Understanding the Python GIL
Python Generator Hacking
Docker Internals - Twilio talk November 14th, 2013
Docker composeで開発環境をメンバに配布せよ
Generators: The Final Frontier
Hadoop 2.2.0 Multi-node cluster Installation on Ubuntu
In Search of the Perfect Global Interpreter Lock
An Introduction to Python Concurrency
Security module for php7 – Killing bugclasses and virtual-patching the rest! ...
Docker and the Container Ecosystem
Introduction and Deep Dive Into Containerd
Hadoop 3.1.1 single node
The Lives of Others: Open-Source Development Practices Elsewhere
Drupalcamp es 2013 drupal with lxc docker and vagrant
Mastering Python 3 I/O
Ad

Viewers also liked (20)

PDF
[Impact Lab] IT инструменты для проекта
PDF
Containers: The What, Why, and How
PDF
A Gentle Introduction To Docker And All Things Containers
ODP
GRID-технологии в физическом эксперименте (Введение)
ODP
Spodarets Pereslavl 2009
PDF
Containers and microservices for realists
PPTX
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
PDF
How to Become a Thought Leader in Your Niche
PDF
Docker, Linux Containers (LXC), and security
PDF
Docker for Ruby Developers
PDF
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
PDF
Вебинар: Введение в машинное обучение
PPTX
The How and Why of Container Vulnerability Management
PDF
Infrastructure for the work of Data Scientists
PDF
Dmitry Spodarets_Infrastructure for the work of data scientists
PDF
Вебинар: Инструменты для работы Data Scientist
PPT
Seven problems of Linux Containers
PDF
Should bee
PPTX
Contain your risk: Deploy secure containers with trust and confidence
PDF
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
[Impact Lab] IT инструменты для проекта
Containers: The What, Why, and How
A Gentle Introduction To Docker And All Things Containers
GRID-технологии в физическом эксперименте (Введение)
Spodarets Pereslavl 2009
Containers and microservices for realists
London Adapt or Die: Kubernetes, Containers and Cloud - The MoD Story
How to Become a Thought Leader in Your Niche
Docker, Linux Containers (LXC), and security
Docker for Ruby Developers
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Введение в машинное обучение
The How and Why of Container Vulnerability Management
Infrastructure for the work of Data Scientists
Dmitry Spodarets_Infrastructure for the work of data scientists
Вебинар: Инструменты для работы Data Scientist
Seven problems of Linux Containers
Should bee
Contain your risk: Deploy secure containers with trust and confidence
Making DevOps Secure with Docker on Solaris (Oracle Open World, with Jesse Bu...
Ad

Similar to Containers for Science and High-Performance Computing (20)

PDF
Introduction to High-Performance Computing (HPC) Containers and Singularity*
PDF
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
PDF
Journal Seminar: Is Singularity-based Container Technology Ready for Running ...
PDF
Docker 0.11 at MaxCDN meetup in Los Angeles
PDF
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
PDF
Introduction to Docker and Containers
PDF
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
PDF
A Gentle Introduction to Docker and Containers
PDF
Docker Introduction + what is new in 0.9
PDF
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
PDF
Docker_AGH_v0.1.3
PPTX
Docker 101
PDF
Docker-v3.pdf
PDF
Docker Application to Scientific Computing
PDF
Introduction to Docker and deployment and Azure
PDF
Singularity: The Inner Workings of Securely Running User Containers on HPC Sy...
PPTX
Introduction to Singularity and Data Containers
PDF
Docking postgres
PDF
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Introduction to High-Performance Computing (HPC) Containers and Singularity*
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Journal Seminar: Is Singularity-based Container Technology Ready for Running ...
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
Introduction to Docker and Containers
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
A Gentle Introduction to Docker and Containers
Docker Introduction + what is new in 0.9
Docker Introduction, and what's new in 0.9 — Docker Palo Alto at RelateIQ
Docker_AGH_v0.1.3
Docker 101
Docker-v3.pdf
Docker Application to Scientific Computing
Introduction to Docker and deployment and Azure
Singularity: The Inner Workings of Securely Running User Containers on HPC Sy...
Introduction to Singularity and Data Containers
Docking postgres
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
KodekX | Application Modernization Development
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Modernizing your data center with Dell and AMD
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Review of recent advances in non-invasive hemoglobin estimation
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Electronic commerce courselecture one. Pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
KodekX | Application Modernization Development
Encapsulation_ Review paper, used for researhc scholars
Understanding_Digital_Forensics_Presentation.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Network Security Unit 5.pdf for BCA BBA.
Diabetes mellitus diagnosis method based random forest with bat algorithm
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Modernizing your data center with Dell and AMD
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Per capita expenditure prediction using model stacking based on satellite ima...
Review of recent advances in non-invasive hemoglobin estimation
The AUB Centre for AI in Media Proposal.docx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx

Containers for Science and High-Performance Computing

  • 1. Containers for Science and High-Performance Computing Dmitry Spodarets Root Linux GlobalLogic Conference 2017
  • 2. Who am I Dmitry Spodarets • Founder and CEO at FlyElephant • PhD candidate at Odessa National University • Lecturer at Odessa Polytechnic University • Organizer of technical conferences about Data Science, HPC, JS, Web Technologies …
  • 4. FlyElephant We automate Data Science and Engineering Simulation and help teams to work efficiently. Computing resources Ready-computing infrastructure Collaboration & Sharing Fast Deployment Expert Community
  • 5. Agenda •Scientific tasks •Computing resources •High-Performance Computing •Containers •Singularity •Conferences
  • 7. Healthcare Financial RetailLife Sciences Manufacturing
  • 11. Computing resources NVIDIA DGX-1 Deep Learning Supercomputer GPU Xeon Phi FPGA
  • 12. 1080 vs Titan X vs K80 vs P100 0,25 8,8 0,3 10,1 2,9 8,7 5,3 10,6 0 2 4 6 8 10 12 FP32 (Single precision) FP64 (Double precision) 1080 Titan X K80 P100 http://www.nvidia.com/ TFLOPS
  • 15. Big tasks – big power
  • 17. HPC in the Cloud
  • 19. What about elastic environment?
  • 22. Timeline of LXC Tools http://kiwenlau.blogspot.com/2015/01/linux-container-technology-overview.html
  • 24. Docker (Dockerfile) FROM registry.flyelephant.net/leap MAINTAINER Dmitry Spodarets <d.spodarets@flyelephant.net> RUN zypper ref && zypper -n in blender && zypper clean
  • 25. Docker (build.sh) #!/bin/bash function docker_build { docker build -t $1 ./$1; docker tag $1 registry.flyelephant.net/$1 docker push registry.flyelephant.net/$1 docker rmi $1 registry.flyelephant.net/$1 }case $1 in all) for i in `cat build.list`; do docker_build $i; done ;; *) docker_build $1;; esac
  • 27. Docker 1. docker images 2. docker run --memory 512m --cpus="2" --name mycont registry.flyelephant.net/tensorflow 3. docker exec -i -t mycont bash 4. docker ps 5. docker stats 6. docker stop CONTAINER ID 7. docker start CONTAINER ID 8. docker rm CONTAINER ID
  • 28. Docker Machine • Amazon Web Services • Digital Ocean • Exoscale • Generic • Google Compute Engine • IBM Softlayer • Microsoft Azure • Microsoft Hyper-V • OpenStack • Oracle • VirtualBox • Rackspace • VMware Fusion • VMware v • Cloud Air • VMware vSphere docker-machine create --driver azure --azure-subscription-id subscription-id --azure- resource-group resourcename --azure-ssh-user user --azure-size machine-name docker-machine ssh machine-name
  • 29. But
  • 30. Generally containers technologies have been designed to solve a single primary use case for the enterprise: micro-service virtualization
  • 31. This is *NOT* the scientific or HPC use case! So… what is our use case?
  • 32. Scientists are like Pirates, pillaging for resources instead of booty! We want to run our jobs. We want to get results.
  • 34. And when we find available resources, we need to ensure application and environment compatibility. This is where containers can be a perfect fit… Our use-case and needs are very different from enterprise!
  • 35. For example, reproducibility is of the utmost importance in science.
  • 36. Science that isn’t easily reproducible is challenged and sometimes embarrassingly erased.
  • 37. Software environments can often be very difficult to reproduce… Sometimes impossible.
  • 38. And as scientists, we need reproducibility!
  • 40. So why not just keep using Docker? The good news: You can! It works great for local and private resources. You can use it to develop and share your work with others using Docker-hub. The bad news: If you ever need to scale beyond your local resources, it maybe a dead end path! Docker, and other enterprise focused containers, are not designed for, efficient or even compatible with traditional HPC. No HPC centers allow it!
  • 41. Shifter vs Charlie Cloud vs Docker vs Singularity
  • 43. Singularity • Project lead: Gregory M. Kurtzer • Sponsored by: HPC @ LBNL • URL: http://singularity.lbl.gov
  • 44. Singularity - Containers for Science • First public release in April 2016, followed by a massive uptake • HPC Wire Editor’s choice: Top Technologies to Watch for 2017 • Simple integration with resource managers, InfiniBand, GPUs, MPI, file systems, and supports multiple architectures (x86_64, PPC, ARM, etc..) • Limits user’s privileges (inside user == outside user) • No root owned container daemon • Network images are supported via URIs and all require local caching: ○ docker:// - This will pull a container from Docker Hub ○ http://, https:// - This will pull an image or tarball from the URL, cache and run it ○ shub:// - Pull an image from the Singularity Hub
  • 45. Singularity: access and privilege User contexts are always maintained when the container is launched. When launched by a particular user, the programs inside will be running as that user. Any escalation pathways inside the container are blocked. Thus… If you want to be root inside the container, you must first be root outside of the container!
  • 46. Singularity: access and privilege [m31@centos7-x64 ~]$ whoami m31 [m31@centos7-x64 ~]$ singularity shell /tmp/debian.img Singularity: Invoking an interactive shell within container… Singularity.debian.img> whoami m31 Singularity.debian.img> sudo whoami sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges? Singularity.debian.img> ls -l /usr/bin/sudo -rwsr-xr-x. 1 root root 136808 Aug 17 13:20 /usr/bin/sudo Singularity.debian.img> exit [m31@centos7-x64 ~]$ sudo singularity shell /tmp/debian.img Singularity: Invoking an interactive shell within container... Singularity.debian.img> whoami root Singularity.debian.img> exit
  • 48. Singularity: Creating the container $ sudo singularity create --size 2048 /tmp/Centos-7.img
  • 49. Singularity: Bootstrapping the container $ sudo singularity bootstrap /tmp/Centos-7.img centos.def
  • 50. The container is ready $ singularity shell /tmp/Centos-7.img Singularity: Invoking an interactive shell within container... Singularity.Centos-7.img> cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
  • 51. Singularity: Bootstrap definition - RedHat/YUM $ cat examples/centos.def BootStrap: yum OSVersion: 7 MirrorURL: http://mirror.centos.org/centos-%{OSVERSION}/%{OSVERSION}/os/$basearch/ Include: yum %runscript echo "This is what happens when you run the container..." %post echo "Hello from inside the container" yum -y install vim-minimal ● The header defines the core operating system ● %runscript: What should this container do when “run” (singularity run, or ./container.img) ● %post: After the core operating system has been built, this gets executed inside the new container
  • 52. Singularity: Bootstrap definition - Debian/Ubuntu $ cat examples/debian.def BootStrap: debootstrap OSVersion: stable MirrorURL: http://ftp.us.debian.org/debian/ %runscript echo "This is what happens when you run the container..." %post echo "Hello from inside the container" apt-get update apt-get -y install vim
  • 53. Singularity: Bootstrap definition - OpenSuse $ cat examples/opensuse.def BootStrap: zypper OSVersion: 42.2 MirrorURL: http://download.opensuse.org/distribution/leap/%{OSVERSION}/repo/oss/ %runscript echo "This is what happens when you run the container..." %post echo "Hello from inside the container"
  • 54. Usage Examples $ python ./hello.py Hello World: The Python version is 2.7.5 $ sudo singularity exec --writable /tmp/debian.img apt-get install python … $ singularity exec /tmp/debian.img python ./hello.py Hello World: The Python version is 2.7.13 $ cat hello.py | singularity exec /tmp/debian.img python Hello World: The Python version is 2.7.13
  • 55. Usage Examples $ mpirun singularity exec /tmp/Centos7-ompi.img /usr/bin/mpi_ring Process 0 sending 10 to 1, tag 201 (4 processes in ring) Process 0 sent to 1 Process 0 decremented value: 9 Process 0 decremented value: 8 Process 0 decremented value: 7 Process 0 decremented value: 6 Process 0 decremented value: 5 Process 0 decremented value: 4 Process 0 decremented value: 3 Process 0 decremented value: 2 Process 0 decremented value: 1 Process 0 decremented value: 0 Process 0 exiting Process 1 exiting Process 2 exiting Process 3 exiting
  • 56. Container Image types supported ● Local images supported: ○ Singularity 2.x default image format ○ SquashFS ○ Tarballs (requires caching) ○ Flat directories (chroots) ● Network images are supported via URIs and all require local caching: ○ docker:// - This will pull a container from Docker Hub ○ http://, https:// - This will pull an image or tarball from the URL, cache and run it ○ shub:// - Pull an image from the Singularity Hub … Wait, what?! Patience, all in due time!
  • 57. Usage Examples $ singularity exec docker://python:latest /usr/local/bin/python hello.py library/python:latest Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:e41da2f0bac3da1769ecdac8b0f5df53c1db38603e39b9e261cafd10caf904de Downloading layer: sha256:75ef15b2048b4cfb06c02f2180f4d89033d02c63f698672d2909b8c9878c4270 Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:45b2a7e03e44b5ea7fad081537134c9cc725bddf94f9093b00e1fa8d8ebbcda1 Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:52f3db4b5710849a53bc2eea0b6f0895c494d751c38c597404d805da82b3f37c Downloading layer: sha256:76610ec20bf5892e24cebd4153c7668284aa1d1151b7c3b0c7d50c579aa5ce75 Downloading layer: sha256:fce5728aad85a763fe3c419db16885eb6f7a670a42824ea618414b8fb309ccde Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 Downloading layer: sha256:5040bd2983909aa8896b9932438c3f1479d25ae837a5f6220242a264d0221f2d Hello World: The Python version is 3.6.0
  • 58. Usage Examples $ singularity exec docker://tensorflow/tensorflow python -m tensorflow.models.image.mnist.convolutional tensorflow/tensorflow:latest Downloading layer: sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4 ... Initialized! Step 0 (epoch 0.00), 5.1 ms Minibatch loss: 8.334, learning rate: 0.010000 Minibatch error: 85.9% Validation error: 84.6% Step 100 (epoch 0.12), 140.0 ms Minibatch loss: 3.250, learning rate: 0.010000 Minibatch error: 6.2% … Step 8500 (epoch 9.89), 134.2 ms Minibatch loss: 1.618, learning rate: 0.006302 Minibatch error: 0.0% Validation error: 0.9% Test error: 0.8%
  • 60. Singularity Hub: Build/Import workflow ● Singularity bootstrap definition is committed and pushed to a GitHub repository (named ‘Singularity’) ● GitHub communicates with Singularity Hub via a web hook, and it gets queued to be built via continuous integration ● Once built the resulting product is stored in Google Cloud and available to be accessed ● The container will be archived and can/should be cited in your scientific publications so others can replicate and leverage your work with: $ singularity shell shub://$UNIQUE_ID $ singularity run shub://$USER/$CONTAINER:$TAG Sochat V., Prybol C, Kurtzer GM. Singularity Hub: Registry for Reproducible Containers (manuscript in progress)
  • 61. Who are using Singularity?
  • 65. DS and HPC Conferences • Data Science Lab • May 13, Odessa, Ukraine • http://www.datascience.in.ua/ • ISC HIGH PERFORMANCE • June 18-22, Frankfurt, Germany • http://www.isc-hpc.com/ • SC Conference • November 12-17, Denver, Colorado, USA • http://sc17.supercomputing.org/