Commit d6624699 authored by Martin Souchal's avatar Martin Souchal
Browse files

esthetique

parent 8211f7c2
images/charlie.png

6.05 KB | W: | H:

images/charlie.png

16 KB | W: | H:

images/charlie.png
images/charlie.png
images/charlie.png
images/charlie.png
  • 2-up
  • Swipe
  • Onion skin
images/docker.png

31.4 KB | W: | H:

images/docker.png

29.8 KB | W: | H:

images/docker.png
images/docker.png
images/docker.png
images/docker.png
  • 2-up
  • Swipe
  • Onion skin
images/shifterlogo_2.png

33.9 KB | W: | H:

images/shifterlogo_2.png

29 KB | W: | H:

images/shifterlogo_2.png
images/shifterlogo_2.png
images/shifterlogo_2.png
images/shifterlogo_2.png
  • 2-up
  • Swipe
  • Onion skin
images/singu.png

28.5 KB | W: | H:

images/singu.png

21.7 KB | W: | H:

images/singu.png
images/singu.png
images/singu.png
images/singu.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -8,10 +8,9 @@ Conteneurs pour le calcul
###### Martin Souchal (Centre de calcul Francois Arago)
---
<!-- footer: Conteneurs pour le calcul - Martin Souchal -->
---
#### En quoi les conteneurs peuvent nous aider dans le contexte scientifique ?
<!-- footer: Conteneurs pour le calcul - Martin Souchal -->
* Collaboration
- Diffusion et partage simple de logiciels
......
<!DOCTYPE html>
<html>
<head>
<title>Singularity</title>
<meta charset="utf-8">
<style>
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
body { font-family: 'Droid Serif'; }
h1, h2, h3 {
font-family: 'Yanone Kaffeesatz';
font-weight: normal;
}
.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
/* Two-column layout */
.left-column {
width: 49%;
float: left;
}
.right-column {
width: 50%;
float: right;
}
</style>
</head>
<body>
<script src="./remark-latest.min.js">
</script>
<script>
var slideshow = remark.create({
sourceUrl: 'prez.md',
});
</script>
<script>
var slideshow = remark.create();
</script>
</body>
</html>
<!-- $theme: default -->
# Conteneurs pour le calcul
# ![](images/singu.png)
# ![](images/licence.png)
###### Martin Souchal (Centre de calcul Francois Arago)
---
# En quoi les conteneurs peuvent nous aider dans le contexte scientifique ?
* Collaboration
- Diffusion et partage simple de logiciels
- Portabilité des logiciels
- Technologie simple à mettre en œuvre
- Rapidité de mise œuvre
* Reproductibilité
- Assurance de répétabilité
- Assurance de retrouver le même environnement
- Assurance de retrouver les même résultats
* Autres
- Solution identique du laptop au meso-centre
- Interface graphique
---
# Cas d'usage pratique dans la science
* Environnement de travail python prêt à l'emploi transportable sur n'importe quel cluster de calcul
* Les données restent dans les espaces de travail et n'ont pas besoin d'être intégrées au conteneur
* Tout ça de manière sécurisée sans avoir besoin d'être root
---
# Répétabilité
* Le journal [Rescience](http://rescience.github.io/) offre la possibilité de soumettre des articles scientifiques qui se doivent d'être reproductible.
* Figer l'environnement d'execution dans un conteneur et le joindre à une publication garantit la reproductibilité
* Voir le TP de Loic Gouarin : https://github.com/gouarin/container_precis2017
⚠️<span class="alert">Attention pas de reproductibilité avec les conteneurs mais de la répétabilité !</span>
---
background-image: url(images/docker.png)
# Docker et le calcul
- Docker est un micro service
- Virtualisation réseau (bridge, puis interfaces avec des IP privées)
- Image docker : superpositions de couches
- GPU, infiniband, openmpi pas intégrés
- Sécurité
- daemon root
- pas d’isolation : une appli root du conteneur qui s’échappe = un attaquant root sur la machine physique
.right[![](images/docker-filesystems-multilayer.png)]
---
# Conteneurs orientés calcul
## Conteneurs usermode compatibles openMPI
- Charlie-cloud
- Singularity
- Shifter
---
background-image: url(images/charlie.png)
# Charlie-cloud
- Univers docker
- nécessite de modifier la configuration kernel (user.max_user_namespaces, namespace.unpriv_enable=1)
- necessite docker pour créer un conteneur
- utilisable sans droits root
- un conteneur = un repertoire
---
background-image: url(images/shifterlogo_2.png)
# Shifter
- Images docker converties mais ne nécessite pas docker installé
- Nombreuses dépendances
- Necessite un Image gateway pour faire lien entre docker et shifter
- utilisable sans droits root mais avec un daemon
- Support GPU natif
- Infiniband natif
---
background-image: url(images/singu.png)
# Singularity
- Aucune dépendance
- compatible toute distribution linux
- droits root nécessaires pour créer le conteneur
- compatible avec docker
- Support GPU natif
- Infiniband natif
- un conteneur = un fichier (meilleures perfs sur fs distribué) ou un répertoire
---
background-image: url(images/singu.png)
# Avantages de Singularity
- Facile à installer et à déployer sur un cluster de calcul
- Compatibilité avec Docker
- Utilisation de registres Public/Privé
- Un conteneur est facile à transporter pour l'utilisateur
- Singularity apps
- Compatible tous scheduler
- Intégration de tests et d'aide intégrée dans le conteneur
---
background-image: url(images/singu.png)
# Création d'un conteneur Singularity
## Avant de commencer
* Conteneur en mode "sandbox"
* Pour le déveleppement, tests
* Possibilité de modifier le conteneur au fur et a mesure
* Conteneur en mode distribution (par défaut)
* Il n'est plus modifiable une fois construit
* Assurance que le destinataire du conteneur ne puisse pas altérer son contenu
* Pour mettre a jour le conteneur, il faut l'incrémenter
---
background-image: url(images/singu.png)
# Commandes de bases
* build: Create the container
* exec: Execute a command to your container
* inspect: See labels, run and test scripts, and environment variables
* pull: pull an image from Docker or Singularity Hub
* run: Run your image as an executable
* shell: Shell into your image
* apps : list apps
* help : help me !
```bash
singularity help example.img
Help me. I'm in the container.
```
---
background-image: url(images/singu.png)
# Création d'un conteneur
* Création du conteneur depuis un fichier de "recette"
```bash
singularity build example.img example.def
```
* Import depuis *Docker*
```bash
singularity import example.img docker://sysmso/openmpi
```
* Execution d'un code dans un conteneur (compilation)
```bash
singularity exec example.img mpicc mpi-ping.c -o ./mpi-ping
```
* Execution d'un programme *OpenMPI*
```bash
mpirun -np 20 singularity exec example.img ./mpi-ping
```
---
background-image: url(images/singu.png)
# Bootstrap file
```bash
Bootstrap: docker
From: ubuntu:latest
%labels
AUTHOR souchal@apc.in2p3.fr
version 1.0
%post
apt-get update
apt-get -y install python
exit 0
%help
Help me. Im in the container.
%files
pymultinest_demo_minimal.py /pymultinest_demo_minimal.py
%environment
LD_LIBRARY_PATH=/usr/local/lib/
export LD_LIBRARY_PATH
%runscript
python /pymultinest_demo_minimal.py
```
---
background-image: url(images/singu.png)
# Singularity apps
## Nouveauté de la version 2.4
- un conteneur, plusieurs applications avec des environnements différents
- pratique pour les workflow partageant les mêmes dépendances
```bash
%apprun foo
exec echo "RUNNING FOO"
%applabels foo
BESTAPP=FOO
export BESTAPP
%appinstall foo
touch foo.exec
%appenv foo
SOFTWARE=foo
export SOFTWARE
%apphelp foo
This is the help for foo.
%appfiles foo
avocados.txt
```
---
# Questions
---
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment