Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<div align="center">
<h1><br>[Formationn Singularity](https://forgemia.inra.fr/formationcalcul2023/formation-singularity)<br> <img src="https://www.inrae.fr/themes/custom/inrae_socle/logo.svg"> [Formation et accompagnement au Calcul, au Cloud et à Kubernetes, Sète 2023](https://fcc.workshop.inrae.fr) <img src="https://www6.inrae.fr/var/internet6_national_dipso/storage/images/configuration-graphique/haut/dipso2/34393-3-fre-FR/DipSO_inra_logo.png"></h1>
<h2>Singularity <img src="./img/singularity.png" width="50" height="50"> Mesocentre <img src="./img/Logo_MESOLR.jpeg" width="100" height="50"> </h2>
</div>
---
Bienvenue à l'atelier Singularity, notre but est de vous donner un aperçu de ce qu'il est possible de faire avec les images [Singularity](https://singularityhub.github.io/singularityhub-docs/docs/introduction).
Quick start:
https://docs.sylabs.io/guides/3.9/user-guide/quick_start.html
- Vous allez découvrir comment créer une image, la lancer simplement et aller un peu plus loin dans son utilisation.
Suivant votre avancée dans l'utilisation de Singularity, vous pourrez naviguer sur les différents TPs proposés.
* Voici un tutoriel officiel pour démarrer avec singularity [sylabs.io user-guide](https://sylabs.io/guides/latest/user-guide/quick_start.html)
* Documentation Singularity [singularity hub doc](https://singularityhub.github.io/singularityhub-docs/)
* Lien vers les dépos d'images Singularity des packages conda [galaxyproject](https://depot.galaxyproject.org/singularity)
* Lien vers exemples de recettes et d'images Singularity sur la forgemia (utilisation CI/CD) [https://forgemia.inra.fr/gafl/singularity](https://forgemia.inra.fr/gafl/singularity)
## Pré-requis :
Local:
Un Linux ou une vm Linux basée sur Debian.
Remote:
Une machine virtuelle Linux a été créée sur le SI INRAE de Montpellier accessible via ssh:
```bash
ssh <mylogin>@195.221.108.97
```
Il vous faut donc un client SSH capable de s'y connecter.
Sous Windows, vous pouvez utiliser l'utilitaire:
[MobaXTerm](https://mobaxterm.mobatek.net/download.html) ou [Putty](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
Sous Linux et Mac, SSH est disponible sur votre OS à l'aide du terminal.
Pour le TP9 exemple de container avec une application X11, vous pouvez utiliser [x2go client](https://wiki.x2go.org/doku.php/doc:installation:x2goclient) ou [MobaXTerm](https://mobaxterm.mobatek.net/download.html)
Tous les fichiers mentionnés dans les TP sont disponibles sur le Gitlab de la forgeMIA: [atelier-singularity](https://forgemia.inra.fr/formationcalcul2023/formation-singularity)
Vous pouvez également en faire un clone sur votre espace de travail (conseillé):
```bash
git clone https://forgemia.inra.fr/formationcalcul2023/formation-singularity.git
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
```
### Pour une brève introduction: [Singularity_introduction.adoc](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/blob/master/Singularity_introduction.adoc)
Singularity on the forgemia: https://forgemia.inra.fr/singularity
GAFL Avignon: https://forgemia.inra.fr/gafl/singularity
Inter-Cati-omics: https://forgemia.inra.fr/inter_cati_omics
## 1) [TP1](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP1_install) Installation de Singularity
Exemple de Singularity version 3.9.2 sur un Debian 11
Vous pouvez retrouver un TP qui explique comment __installer Singularity__ à partir d'une __machine linux__ ou bien d'une __VM__.
Le script shell installe Singularity en 3 étapes:
- 1) Installation des dépendences
- 2) Go language
- 3) compilation et installation de Singularity
## 2) [TP2](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP2_first_containers) Création et utilisation d'une première image Singularity
TP2_R_base, Voici un tutoriel pour apprendre à __créer un conntainer en intéractif et à base de "recettes" et lancer des images Singularity__.
Ce tp permet:
- La contruction en mode intéartif
- La création d'un fichier de recette (exemple R)
- La construction d'une image à partir d'un fichier recette
- L'éxécution d'image Singularity
## 3) [TP3](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP3_CICD) Utilisation de CI/CD sur gitlab (continus integration et continus deployment)
Permet la création automatique d'images sans passer par une machine Linux:
**! Attention** Sur la forge mia, la taille maximale d'une image est de 4Go.
TP sur le __CI/CD__ pour les utilisateurs et administrateurs.
Création d'un GitLab CI/CD pipeline configuration: ".gilab-ci.yml"
Ce tp permet de:
1) lancer le build automatiquement
- Un exemple de recette Singularity (R base)
2) déployer l'image sur le gitlab de la forge avec OCI (Open container initiative)
- Comment obtenir l'image (pull) en utilisant ORAS: OCI Registry As Storage (https://oras.land/)
## 4) [TP4](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP4_conda) Utilisation du système de packaging Conda dans un container Singularity
[Conda](https://docs.conda.io/en/latest/)
[Conda Getting started](https://docs.conda.io/projects/conda/en/latest/user-guide/getting-started.html)
L'utilisation de conda encapsulé dans un container permet une installation simplifiée de logiciels versionnés et leur dépendances.
Ce tp permet:
- L'installation de [miniconda](https://docs.conda.io/en/latest/miniconda.html) embarqué dans un container.
- L'installation de packages conda dans un container
## 5) [TP5](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP5_mpi) Création d'image pour executer du code MPI
Permet d'encapsulé un binaire MPI dans un container.
Et d'éxécuter le binaire dans un environement HPC
!!! Il faut que le mpi à l'intérieur du container soit compabile avec celui de l'hôte.
Ce tp permet:
- L'installation des libraries OpnMPI
- La Compilation de code MPI
- L'éxecution du code MPI
- L'utilisation dans un environement HPC (avec slurm)
## 6) [TP6](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP6_prebuilt_image) Réutilisation d'image de bases préconstruites.
Utilisation d'une image pré-construite comme base d'un nouveau container.
Permet ainsi la réduction du temps de build du nouveau container.
- exemple utilisation d'une image pre-built contenant miniconda et "r-essentials.3.6"
- A partir de cette image nous avons juste à ajouter des packages R
__! Attention__ Il faut que l'image pré-construire suive les bonnes pratiques (versions, documentations,...)
build time sans prebuilt: 8m30s
build time avec prebuilt: 1m05s
## 7) [TP7](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP7_multi_stage) Utilisation du Build multi-Stage.
Permet de réduire la taille de l'image finale.
Il y a 2 exemples:
Exemple 1) "Hello World" en Go
- stage 1 installation de Go lang et compilation du code source
- stage 2 construction de l'image finale avec seulement le systeme de base et le programme compilé.
Sans multi-stage image finale pèse 122Mo
Avec multi-stage image finale pèse 3.6Mo
Exemple 2) Utilisation de conda Avec R et combine l'utilisation d'unne image pré-construite
- stage 1 installation de Miniconda et installation de r-essentials dans un connda env
- stage 2 onn ne garde que l'environement minimal conda R dans l'image finale.
Sans multi-stage image finale pèse 1.1Go
Avec multi-stage image finale pèse 298Mo
## 8) [TP8](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP8_microservice) Création d'image pour des Services
Exemple de serveur Apache.
Ce TP vous permettra de contruire une image contenant apache2 serveur.
Et de l'utiliser en daemon avec singularity instance.
## 9) [TP9](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP9_x11) Construction et Utilisation d'image avec interface graphique
Ce TP vous permettra de construire une image avec unne application graphique (GUI) et de l'exécuter.
Avec pour exemple: Rstudio
Utiliser ssh -X ou x2go client avec un xterm pour l'utiliser
## 10) [TP10](https://forgemia.inra.fr/formationcalcul2023/formation-singularity/-/tree/master/TP10_conversions) Conversion de recettes Dockers en recettes Singularity
Conversions entre dockerfile et singularity définition file
Exemple avec un dockerfile
>[!WARNING]__! Attention__ Prefer to use recipes conversions reather images conversions