Skip to content
Snippets Groups Projects
Forked from FormationCalcul2022 / formation-singularity
Up to date with the upstream repository.


Formationn Singularity
        Formation et accompagnement au Calcul, au Cloud et à Kubernetes, Montpellier 2022      

Singularity      Mesocentre   


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.

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.

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:

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 ou Putty

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 ou MobaXTerm

Tous les fichiers mentionnés dans les TP sont disponibles sur le Gitlab de la forgeMIA: atelier-singularity Vous pouvez également en faire un clone sur votre espace de travail (conseillé):

git clone https://forgemia.inra.fr/pepi-atelier-singularity/atelier-singularity.git

Pour une brève introduction: 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 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
    1. Go language
    1. compilation et installation de Singularity

2) TP2 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 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)
  1. 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 Utilisation du système de packaging Conda dans un container Singularity

Conda Conda Getting started 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 embarqué dans un container.
  • L'installation de packages conda dans un container

5) TP5 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 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 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 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 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 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