{"id":2370,"date":"2016-07-21T15:50:39","date_gmt":"2016-07-21T19:50:39","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/fr\/?p=2370"},"modified":"2017-04-29T22:53:42","modified_gmt":"2017-04-30T02:53:42","slug":"introduction-a-la-bio-informatique-dans-un-conteneur","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/introduction-a-la-bio-informatique-dans-un-conteneur\/","title":{"rendered":"Introduction \u00e0 la bio-informatique dans un conteneur"},"content":{"rendered":"<p>Une r\u00e9cente tendance issue de l\u2019informatique nuagique semble int\u00e9resser de plus en plus la communaut\u00e9 bio-informatique. Cette tendance est de d\u00e9velopper et de d\u00e9ployer une application dans un conteneur. Ce conteneur contient non seulement l\u2019application mais les librairies n\u00e9cessaires et une version minimaliste des applications du syst\u00e8me d\u2019exploitation. Une fois le conteneur  construit, il est imm\u00e9diatement pr\u00eat \u00e0 \u00eatre utilis\u00e9 sur un ordinateur h\u00f4te qui contient l\u2019environnent requis pour d\u00e9marrer le conteneur.<\/p>\n<p>Pour un d\u00e9veloppeur, ceci est tr\u00e8s int\u00e9ressant puisque l\u2019environnement dans lequel on d\u00e9veloppe et teste l\u2019application est identique au niveau logiciel \u00e0 celui qui sera utilis\u00e9 en production sur un serveur. Comme le conteneur est aussi isol\u00e9 du reste du syst\u00e8me d\u2019exploitation, on \u00e9vite les conflits de version et les probl\u00e8mes d\u2019applications qui brisent lorsque l\u2019administrateur syst\u00e8me met \u00e0 jour les librairies du serveur. <\/p>\n<p>Pour un utilisateur, ceci est aussi tr\u00e8s int\u00e9ressant puisqu\u2019il ne devra pas t\u00e9l\u00e9charger et installer toutes les d\u00e9pendances de l\u2019application. Il arrive parfois que ces d\u00e9pendances soient mal document\u00e9es ou qu&rsquo;elles ne soient tout simplement plus disponibles avec le temps.  Ceci est donc int\u00e9ressant pour la distribution et l\u2019utilisation de logiciels bio-informatiques.<\/p>\n<p>Un environnement populaire pour d\u00e9velopper, distribuer et ex\u00e9cuter des conteneurs est <a href=\"https:\/\/www.docker.com\/\" target=\"_blank\">Docker<\/a>. Docker permet de d\u00e9ployer des conteneurs sous Linux. Cette plateforme a \u00e9t\u00e9 choisie par la communaut\u00e9 bio-informatique pour plusieurs projets dont :   <a href=\"http:\/\/bioboxes.org\/\" target=\"_blank\">Bioboxes<\/a> [g\u00e9nomique], <a href=\"http:\/\/biodocker.org\/\" target=\"_blank\">BioDocker<\/a> [prot\u00e9omique], <a href=\"http:\/\/bioshadock.genouest.org\/\" target=\"_blank\">BioShaDock<\/a> et <a href=\"https:\/\/dockstore.org\/\" target=\"_blank\">DockStore<\/a>.<\/p>\n<p>Pour vous initier \u00e0 Docker, vous pouvez t\u00e9l\u00e9charger Docker pour Linux ou Docker Toolbox qui est disponible pour Windows et Mac. Ce dernier outil permet de d\u00e9ployer des machines virtuelles avec Docker soit sur votre ordinateur ou encore dans le nuage (Amazon, Google, Microsoft). Une fois Docker install\u00e9, on peut soit construire un nouveau conteneur ou encore en r\u00e9cup\u00e9rer un d\u2019un r\u00e9pertoire public. Voici un exemple d\u2019un court script Dockerfile qui indique la s\u00e9rie d\u2019instructions pour construire un conteneur pour NCBI BLAST+ extrait de BioDocker (<a href=\"https:\/\/github.com\/BioDocker\/containers\/blob\/master\/blast\/2.2.31\/Dockerfile\" target=\"_blank\">https:\/\/github.com\/BioDocker\/containers\/blob\/master\/blast\/2.2.31\/Dockerfile<\/a>):<\/p>\n<pre>\r\n#################################################################\r\n# Dockerfile\r\n#\r\n# Version:          1\r\n# Software:         NCBI BLAST+\r\n# Software Version: 2.2.31\r\n# Description:      basic local alignment search tool\r\n# Website:\r\nhttp:\/\/blast.ncbi.nlm.nih.gov\/Blast.cgi?PAGE_TYPE=BlastDocs&DOC_TYPE=Download\r\n# Tags:             Genomics|Proteomics|Transcriptomics|General\r\n# Provides:         blast 2.2.31\r\n# Base Image:       biodckr\/biodocker:latest\r\n# Build Cmd:        docker build biodckr\/blast 2.2.31\/.\r\n# Pull Cmd:         docker pull biodckr\/blast\r\n# Run Cmd:          docker run biodckr\/blatst <program>\r\n#################################################################\r\n\r\n# Source Image\r\nFROM biodckr\/biodocker\r\n\r\n################## BEGIN INSTALLATION ###########################\r\n\r\n# install\r\nRUN conda install blast=2.2.31\r\n\r\n# Change workdir to \/data\/\r\nWORKDIR \/data\/\r\n\r\n##################### INSTALLATION END ##########################\r\n\r\n# File Author \/ Maintainer\r\nMAINTAINER Saulo Alves Aflitos <sauloal@gmail.com>\r\n# Modified by Felipe da Veiga Leprevost 06-17-2016\r\n\r\nFROM est la premi\u00e8re instruction dans ce Dockerfile. Elle indique l\u2019image source sur laquelle est bas\u00e9e le conteneur. Ici, l\u2019image est biodcker\/biodocker qui est bas\u00e9e sur une image minimaliste de ubuntu:14.04.3 (voir <a href=\"https:\/\/github.com\/BioDocker\/containers\/blob\/master\/biodocker\/Dockerfile\" target=\"_blank\">ici<\/a> pour les d\u00e9tails expliquant celle-ci est construite et un exemple plus complet de comment est construit un conteneur). Cette image contient toutes les d\u00e9pendances globales pour les images BioDocker. Cette structure d\u2019image est pratique non seulement pour la r\u00e9utilisation mais aussi pour simplement mettre \u00e0 jour le syst\u00e8me d\u2019exploitation par exemple. Un conteneur est construit avec un  syst\u00e8me de fichiers par couche pour \u00e9viter la duplication des donn\u00e9es. Ensuite, l\u2019instruction RUN installe Blast dans le conteneur avec le gestionnaire de modules conda disponible dans l\u2019image biodcker\/biodocker. Finalement, WORKDIR change le dossier de travail pour l\u2019ex\u00e9cution future de l\u2019application. Puisque BioDocker fournit l\u2019image du conteneur dans le r\u00e9pertoire public DockerHub, on peut \u00e9viter la construction du conteneur et simplement le r\u00e9cup\u00e9rer comme indiqu\u00e9 dans le Dockerfile:\r\n\r\n# docker run biodckr\/blast blastp -h\r\n\r\nUnable to find image 'biodckr\/blast:latest' locally\r\nlatest: Pulling from biodckr\/blast\r\n8387d9ff0016: Already exists\r\n3b52deaaf0ed: Already exists\r\n4bd501fad6de: Already exists\r\na3ed95caeb02: Already exists\r\naf6fa2683829: Already exists\r\nfb2d2930af28: Already exists\r\ne712c46836f6: Already exists\r\nc0a2096039c4: Already exists\r\nDigest:\r\nsha256:204e2c2ad3c0d55c0a24b06444c2bb5a9a8edc2918cd5f959d0e5d3d33ba292a\r\nStatus: Downloaded newer image for biodckr\/blast:latest\r\nUSAGE\r\n blastp [-h] [-help] [-import_search_strategy filename]\r\n   [-export_search_strategy filename] [-task task_name] [-db database_name]\r\n   [-dbsize num_letters] [-gilist filename] [-seqidlist filename]\r\n   [-negative_gilist filename] [-entrez_query entrez_query]\r\n   [-db_soft_mask filtering_algorithm] [-db_hard_mask filtering_algorithm]\r\n   [-subject subject_input_file] [-subject_loc range] [-query input_file]\r\n   [-out output_file] [-evalue evalue] [-word_size int_value]\r\n   [-gapopen open_penalty] [-gapextend extend_penalty]\r\n   [-qcov_hsp_perc float_value] [-max_hsps int_value]\r\n   [-xdrop_ungap float_value] [-xdrop_gap float_value]\r\n   [-xdrop_gap_final float_value] [-searchsp int_value]\r\n   [-sum_stats bool_value] [-seg SEG_options] [-soft_masking soft_masking]\r\n   [-matrix matrix_name] [-threshold float_value] [-culling_limit\r\nint_value]\r\n   [-best_hit_overhang float_value] [-best_hit_score_edge float_value]\r\n   [-window_size int_value] [-lcase_masking] [-query_loc range]\r\n   [-parse_deflines] [-outfmt format] [-show_gis]\r\n   [-num_descriptions int_value] [-num_alignments int_value]\r\n   [-line_length line_length] [-html] [-max_target_seqs num_sequences]\r\n   [-num_threads int_value] [-ungapped] [-remote] [-comp_based_stats compo]\r\n   [-use_sw_tback] [-version]\r\n\r\nDESCRIPTION\r\n  Protein-Protein BLAST 2.2.31+\r\n<\/pre>\n<p>Use &lsquo;-help&rsquo; to print detailed descriptions of command line arguments<\/p>\n<p>En une seule commande, Docker a r\u00e9cup\u00e9r\u00e9 le conteneur de l\u2019application sur DockerHub et a ex\u00e9cut\u00e9 l\u2019application. Dans l\u2019historique, on voit d\u2019abord chaque couche du syst\u00e8me de fichiers du conteneur qui est t\u00e9l\u00e9charg\u00e9e et extraite. Ensuite, Docker a d\u00e9marr\u00e9 le conteneur et a ex\u00e9cut\u00e9 Blastp. L\u2019ex\u00e9cution en ligne de commande est assez simple pour cet exemple. Toutefois, elle se complique un peu lorsqu\u2019on veut transf\u00e9rer des donn\u00e9es entre l\u2019h\u00f4te et le conteneur.<\/p>\n<p>Docker est aussi int\u00e9ressant pour le d\u00e9veloppement et d\u00e9ploiement  de services web. Ces services sont g\u00e9n\u00e9ralement complexes \u00e0 installer puisqu\u2019ils n\u00e9cessitent un serveur web, une base de donn\u00e9es, etc. Avec Docker, il est possible de mettre chacun de ses composants dans un conteneur et ensuite d\u2019orchestrer leurs communications. On \u00e9vite donc de r\u00e9installer le tout \u00e0 chaque d\u00e9ploiement et on peut r\u00e9utiliser les conteneurs pour diff\u00e9rents projets. L\u2019orchestration d\u2019un tel service est, par contre, plus compliqu\u00e9e.<\/p>\n<p>Pour ceux qui voudraient plonger dans l\u2019univers des conteneurs, je vous sugg\u00e8re d\u2019avoir au pr\u00e9alable une solide base pour l\u2019administration de syst\u00e8me Linux. La technologie Docker est r\u00e9cente (2013) et en \u00e9volution rapide. Beaucoup d\u2019outils sont disponibles pour g\u00e9rer cet environnement et il faut prendre le temps de s\u2019informer pour s\u2019y retrouver. <\/p>\n<p>J&rsquo;esp\u00e8re que vous avez appr\u00e9ci\u00e9 cette br\u00e8ve introduction aux contenants en bio-informatique.  Cette nouvelle technologie en croissance semble, selon moi, avoir un grand potentiel pour simplifier la distribution des outils bio-informatiques via un r\u00e9pertoire public et pour simplifier l\u2019installation.<\/p>\n<p>[\/fusion_builder_column][\/fusion_builder_row][\/fusion_builder_container]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une r\u00e9cente tendance issue de l\u2019informatique nuagique semble int\u00e9resser de plus en plus la communaut\u00e9 bio-informatique. Cette tendance est de d\u00e9velopper et de d\u00e9ployer une application dans un conteneur. Ce conteneur contient non seulement l\u2019application mais les librairies n\u00e9cessaires et une version minimaliste des applications du syst\u00e8me d\u2019exploitation. Une fois le conteneur construit, il est imm\u00e9diatement pr\u00eat \u00e0 \u00eatre utilis\u00e9 sur un ordinateur h\u00f4te qui contient l\u2019environnent requis pour d\u00e9marrer le conteneur. Pour un d\u00e9veloppeur, ceci est tr\u00e8s int\u00e9ressant puisque <a href=\"https:\/\/bioinfo.iric.ca\/fr\/introduction-a-la-bio-informatique-dans-un-conteneur\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[41],"tags":[111,141],"class_list":["post-2370","post","type-post","status-publish","format-standard","hentry","category-bioinformatique","tag-distribution","tag-environnement"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=2370"}],"version-history":[{"count":7,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2370\/revisions"}],"predecessor-version":[{"id":3292,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/2370\/revisions\/3292"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=2370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=2370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=2370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}