Description | Savoir créer des conteneurs Singularity |
---|---|
Cours lié | HPC Administration Module2 |
Auteur | Ndomassi TANDO (ndomassi.tando@ird.fr) |
Date de création | 27/09/2019 |
Date de modification | 27/09/2019 |
Summary
- Préparer son environnement
- Créer un fichier de recette
- Construire son conteneur
- Tester son conteneur
- Links
- License
Préparer son environnement
Il faut créer sur le cluster dans une partition partagée les deux répertoires suivantes:
- def: destiner à accueillir les fichiers de recettes
- conteneurs: destiner à accueillir les conteneurs Singularity générés
On pourra par exemple les créer dans /usr/local/singularity
:
Créer un fichier de recette:
Un fichier de recette est un fichier dans lequel on va écrire toutes les lignes de commandes nécessaires pour créer un conteneur singularity.
Il s’agit d’un fichier avec l’extension .def
On va en retrouver dans ce fichier plusieurs sections obligatoires:
l’entête
Il doit être écrit au début du fichier et donne les informations à Singularity sur le système d’exploitation à utiliser dans le conteneur.
BootStrap
va determiner l’agent bootstrap agent qui va être utilisé por créer le système d’exploitation de base base.
Par exemple,l’agent bootstrap library
bootstrap va récupérér un conteneur de base depuis les ContainerLibrary
.
l’agent bootstrap docker
va lui récupérer les couches docker depuis le Docker Hub comme OS de base pour démarrer notre image.
Les principaux BootStrap sont les suivants:
- library (images hébergées sur le Container Library)
- docker (images hébergées sur Docker Hub)
- shub (images hébergées sur Singularity Hub)
- oras (images des registres OCI)
- scratch (pour construire des conteneurs from scratch)
Le mot clé From
permet des choisir l’OS et la version que l’on veut utiliser exemple: From: ubuntu:18.04
les sections:
%labels
permet de rajouter des metadata au fichier /.singularity.d/labels.json
à l’intérieur du conteneur.
Il donne des informations générales sur le conteneur et son auteur.
%help
permet d’écrire une aide à destination des utilisateurs quand il vont taper la commande singularity help nom_conteneur.simg
%environment
permet de définir des variables d’environnement à l’intérieur du conteneur. Ces variables seront prises en compte dès le build du conteneur.
%post
dans cette section on va lister les commandes à passer à l’OS de base. Typiquement c’est là que l’on écrit les commandes pour installer notre logiciels
%runscript
dans cette section ce sont les commandes qui font être exécuter au lancement du conteneur singularity run mon_conteneur.simg
ou singularity exec mon_conteneur.simg
. Quand le conteneur est appele, les arguments suivants le nom du conteneur sont passés en arguments.
Exemple de fichier de recette:
Ci-dessous un exemple de fichier de recette bwa-0.7.17.def
pour la construction du conteneur bwa-0.7.17.simg
Construire son conteneur:
Une fois le fichier de recette créé, on va pouvoir le conteneur singularity avec la commande
exemple pour le conteneur bwa-0.7.17:
Tester son conteneur:
Permettra de lancer le runscript du conteneur à l’intérieur du conteneur.
Exemple:
lancer la commande bwa -h
Permettra de lancer la commande précisée à l’intérieur du conteneur.
Exemple:
singularity exec /usr/local/singularity-2.4/containers/bwa-0.7.17.simg cat /etc/profile
Permettra d’afficher le contenu du fichier /etc/profile
du conteneur
Links
- Cours liés : HPC Trainings