Dans cette page :
- Utilisation d'Apptainer
- Construction de conteneurs
- Exécuter une application présente dans le conteneur :
- Exécuter une commande à l’intérieur du conteneur
- Ouvrir un shell dans le conteneur
- Accéder à mes données sur les espaces de stockage depuis le conteneur
- Exemples de conteneurs disponibles
- Téléchargement de conteneurs depuis un dépôt
- Gestion du cache local
- Pour aller plus loin
Vous pouvez déployer vos applications via des conteneurs Apptainer (anciennement Singularity) sur Kairos.
Kairos dispose de deux architectures de calcul :
- x86
- arm64
Apptainer est disponible sur les deux architectures. Il est cependant impératif d’utiliser un conteneur construit pour la même architecture que le nœud de calcul sur lequel il est exécuté.
Utilisation d'Apptainer
Pour être utilisables, les conteneurs doivent obligatoirement être stockés dans un sous-répertoire de :
/work/conteneurs
Si vous ne disposez pas encore d’un répertoire personnel, contactez le support afin qu’il soit créé.
Merci de réserver l’utilisation des conteneurs sur les frontales de connexion à des opérations légères uniquement : shell interactif ; installation de paquets Python ; vérification du contenu d’un conteneur ; tests rapides.
Construction de conteneurs
Pour les conteneurs x86 vous pouvez construire vos conteneurs directement depuis les frontales de connexion à l’aide de la commande :
apptainer build mon_conteneur.sif mon_conteneur.def
Pourl es conteneurs arm64 vous devez d'avord vous conecter sur un noeud GH à l'aide de la commande:
runGHsession.sh
puis :
apptainer build mon_conteneur.sif mon_conteneur.def
Exécuter une application présente dans le conteneur :
Depuis un script Slurm :
apptainer run /work/conteneurs/<projet>/<user>/mon_conteneur.sif
Exécuter une commande à l’intérieur du conteneur
Par exemple pour lancer un script Python :
apptainer exec --nv /work/conteneurs/<projet>/<user>/mon_conteneur.sif python mon_script.py
L’option --nv est nécessaire uniquement lorsque le conteneur utilise un GPU NVIDIA.
Ouvrir un shell dans le conteneur
Pour vérifier le contenu du conteneur et faire des essais ou des installations particulières sur la frontale :
apptainer shell /work/conteneurs/<projet>/<user>/mon_conteneur.sif
Pour faire des essais en interactif sur un noeud de calcul (lance un shell dans le conteneur sur un noeud) :
srun -n 1 -p shared --pty apptainer shell /work/conteneurs/<projet>/<user>/mon_conteneur.sif
Accéder à mes données sur les espaces de stockage depuis le conteneur
Par défaut, seul votre espace HOME est accessible à l'intérieur du conteneur. Pour ajouter les espaces WORK et TMPDIR vous devez ajouter l'option suivante :
--bind /tmpdir,/work
Exemple :
apptainer exec --bind /tmpdir,/work /work/conteneurs/<projet>/<user>/mon_conteneur.sif python mon_script.py
Exemples de conteneurs disponibles
Plusieurs conteneurs sont déjà installés sur Kairos.
Conteneurs arm64
Ne peuvent être exécutés que sur les nœuds arm64.
/work/conteneurs/shared/AI/nemo_25.04.03_arm.sif
/work/conteneurs/shared/alphafold3/alphafold3.sif
Conteneurs x86
Ne peuvent être exécutés que sur les nœuds x86.
/work/conteneurs/shared/openqp/openqp_v1.0.sif
Compatibilité des architectures
Un conteneur arm64 ne peut pas être exécuté sur un nœud x86, et inversement.
Par exemple, lancer un conteneur arm64 sur un nœud x86 produit l’erreur suivante :
kairoslogin1$ apptainer shell /work/conteneurs/shared/alphafold3/alphafold3.sif
FATAL: While checking container encryption:
could not open image /work/conteneurs/shared/alphafold3/alphafold3.sif: the image's architecture (arm64) could not run on the host's (amd64)
Téléchargement de conteneurs depuis un dépôt
Vous pouvez utiliser des conteneurs mis à disposition par des éditeurs ou des projets de développement à l'aide de la commande apptainer pull
Par exemple pour un conteneur arm64 :
# Se placer dans un noeud arm
runGHsession.sh
# Ajout du dépôt Sylabs
apptainer remote add --no-login SylabsCloud cloud.sycloud.io
apptainer remote use SylabsCloud
# Se placer dans son répertoire de conteneurs
cd /work/conteneurs/$GROUP/$USER
# Téléchargement d'une image ARM64
apptainer pull --arch arm64 library://library/default/lolcow:latest
Pour une image x86 :
apptainer pull --arch amd64 library://library/default/lolcow:latest
Pour tester :
apptainer run /work/conteneurs/$GROUP/$USER/lolcow_latest.sif
Gestion du cache local
Attention, des fichiers de cache parfois volumineux sont téléchargés localement dans votre espace $HOME lorsque vous utilisez la commande apptainer pull.
Pour lister le contenu du cache et l'espace utilisé : apptainer cache list
Pour vider le cache et libérer l'espace : apptainer cache clean
Pour aller plus loin
Pour des raisons de sécurité, l'exécution de conteneurs en mode privilégié (setuid) n'est pas autorisée sur Kairos. Dans de rares cas, cela peut empêcher l'utilisation de certaines options d'apptainer