silico.biotoul.fr
 

Docker

From silico.biotoul.fr

(Difference between revisions)
Jump to: navigation, search
m (Utilisation d'un programme : exemple prokka)
m (Utilisation d'un programme : exemple prokka)
Line 59: Line 59:
  podman run staphb/prokka:1.14.5 prokka -h
  podman run staphb/prokka:1.14.5 prokka -h
  podman run staphb/prokka:1.14.5 prokka --listdb
  podman run staphb/prokka:1.14.5 prokka --listdb
 +
 +
 +
'''Remarque :''' à chaque exécution d'un container, l'image est gardée. Il faudra donc faire le ménage dans les sorties des containers. Il peut aussi être judicieux d'ajouter l'option <tt>--rm</tt> qui supprime la sortie du container et nous évite d'avoir à faire le ménage :
 +
podman ps -a
Line 67: Line 71:
Il faut rendre accessible le fichier à l'intérieur du container avec l'option <tt>--volume</tt> ou <tt>-v</tt> → cela correspond à un montage
Il faut rendre accessible le fichier à l'intérieur du container avec l'option <tt>--volume</tt> ou <tt>-v</tt> → cela correspond à un montage
-
  podman run -v ./data:/data  staphb/prokka:1.14.5 prokka --kingdom Viruses --outdir results NC_045512.2.fasta
+
  podman run --rm -v ./data:/data  staphb/prokka:1.14.5 prokka --kingdom Viruses --outdir results NC_045512.2.fasta
Résultats :
Résultats :

Revision as of 16:20, 30 August 2022

Motivation : problèmes de dépendances logicielles et de reproductibilités des résultats obtenus (avec un certain environnement, librairies, ...).

Solution (partielle) : mettre dans un container tout ce qu'il faut pour réaliser le même traitement.

Remarque : cela permet aussi de distribuer l'exécution de programme sur une grille de calculs ou un cloud.


Nous allons utiliser podman qui est l'équivalent de docker mais présente certains avantages :

  • docker nécessite un service (qui tourne donc en permanence) alors que podman non
  • il faut des permissions élevées (root) pour docker et pas toujours pour podman


Contents

Test : Hello world

Pour vérifier que cela fonctionne :

podman run hello-world

podman devrait récupérer l'image du container sur docker.io puis l'exécuter sans trop de soucis.

Images présentes sur le compte :

podman images

Container en cours d'utilisation :

podman ps

Container en cours ou ayant terminé :

podman ps -a

On observe qu'il reste hello-word, on peut accéder aux logs avec son identifiant ou son nom (utile pour le débogage en cas de crash du container) :

podman logs CONTAINER_ID

Nettoyage : suppression de ce qu'il reste de l'exécution précédente

podman rm CONTAINER_ID

Nettoyage : suppression de l'image récupérée de docker.io

porman rmi IMAGE_ID

Utilisation d'un programme : exemple prokka

Prokka: rapid prokaryotic genome annotation, Bioinformatics 2014, Torsten Seemann article github réalise l'annotation de génomes procaryotes. Ce programme fait appel à un certain nombre d'autres programmes, librairies et bases de données (BLAST+, HMMER3, BioPerl, ...) ce qui peut rendre son installation et sa configuration fastidieuses et/ou laborieuses.


Pour illustrer la simplicité de son utilisation (avec les paramètres par défaut même si, en général, il est recommandé d'adapter les paramètres à l'étude réalisée) sur un petit génome.

Récupération de l'image sur docker.io :

podman pull staphb/prokka:latest

Ou bien à partir d'une recherche sur https://hub.docker.com : https://hub.docker.com/r/staphb/prokka

Il est parfois nécessaire de rester sur une version plutôt que de choisir latest :

podman pull staphb/prokka:1.14.5
podman images
REPOSITORY               TAG         IMAGE ID      CREATED        SIZE
docker.io/staphb/prokka  latest      7e63ea9aea78  20 months ago  1.79 GB
docker.io/staphb/prokka  1.14.5      814ee67a9e22  20 months ago  1.79 GB

Utilisation :

podman run staphb/prokka:1.14.5 prokka -h
podman run staphb/prokka:1.14.5 prokka --listdb


Remarque : à chaque exécution d'un container, l'image est gardée. Il faudra donc faire le ménage dans les sorties des containers. Il peut aussi être judicieux d'ajouter l'option --rm qui supprime la sortie du container et nous évite d'avoir à faire le ménage :

podman ps -a


Nous allons l'appliquer à un génome du covid :

mkdir data
cd data
curl http://silico.biotoul.fr/enseignement/m2bbs/fedora/NC_045512.2.fasta > NC_045512.2.fasta

Il faut rendre accessible le fichier à l'intérieur du container avec l'option --volume ou -v → cela correspond à un montage

podman run --rm -v ./data:/data  staphb/prokka:1.14.5 prokka --kingdom Viruses --outdir results NC_045512.2.fasta

Résultats :

ls -lh data/results
total 284K
-rw-r--r-- 1 guest guest 5.1K Aug 30 18:00 PROKKA_08302022.err
-rw-r--r-- 1 guest guest 9.8K Aug 30 18:00 PROKKA_08302022.faa
-rw-r--r-- 1 guest guest  29K Aug 30 18:00 PROKKA_08302022.ffn
-rw-r--r-- 1 guest guest  30K Aug 30 18:00 PROKKA_08302022.fna
-rw-r--r-- 1 guest guest  30K Aug 30 18:00 PROKKA_08302022.fsa
-rw-r--r-- 1 guest guest  54K Aug 30 18:00 PROKKA_08302022.gbk
-rw-r--r-- 1 guest guest  32K Aug 30 18:00 PROKKA_08302022.gff
-rw-r--r-- 1 guest guest 7.0K Aug 30 18:00 PROKKA_08302022.log
-rw-r--r-- 1 guest guest  58K Aug 30 18:00 PROKKA_08302022.sqn
-rw-r--r-- 1 guest guest 1.6K Aug 30 18:00 PROKKA_08302022.tbl
-rw-r--r-- 1 guest guest  469 Aug 30 18:00 PROKKA_08302022.tsv
-rw-r--r-- 1 guest guest   63 Aug 30 18:00 PROKKA_08302022.txt

Combien de protéines sont annotées ?

Est-ce que la protéine spike utilisée pour produire certains vaccins est identifiée ?

Mise en place d'un service

Construire une image