{"id":2358,"date":"2018-03-12T17:24:25","date_gmt":"2018-03-12T16:24:25","guid":{"rendered":"https:\/\/pcll.ac-dijon.fr\/eole\/?p=2358"},"modified":"2018-03-12T17:24:25","modified_gmt":"2018-03-12T16:24:25","slug":"hackathon-compte-rendu-groupe-docker-mode-swarm","status":"publish","type":"post","link":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/","title":{"rendered":"Hackathon : compte rendu du groupe  Docker en mode swarm"},"content":{"rendered":"<p><strong>L&rsquo;objectif de ce groupe de travail \u00e9tait de monter en comp\u00e9tences sur l&rsquo;utilisation de Docker en mode swarm.<\/strong><\/p>\n<p>Swarm est un mode natif de Docker depuis la version 1.13. Il permet d&rsquo;utiliser un groupe de machines ex\u00e9cutant Docker comme un seul Docker Engine. On parlera de grappe ou de cluster.<\/p>\n<p>Les commandes sont ex\u00e9cut\u00e9es sur le cluster \u00e0 l&rsquo;aide d&rsquo;un swarm manager.<br \/>\nLes machines (physiques ou virtuelles) sont d\u00e9sign\u00e9es comme des n\u0153uds (nodes).<\/p>\n<ul>\n<li>Les machines swarm managers :\n<ul>\n<li>sont les seules du cluster \u00e0 pouvoir ex\u00e9cuter les commandes ;<\/li>\n<li>autorisent d&rsquo;autres machines \u00e0 se joindre au cluster.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Les machines swarm workers :\n<ul>\n<li>sont utiles uniquement pour augmenter la capacit\u00e9 du cluster.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Source : <a class=\"external\" href=\"https:\/\/docs.docker.com\/engine\/swarm\/\">https:\/\/docs.docker.com\/engine\/swarm\/<\/a><\/p>\n<h2>EOLE, Z\u00e9phir, Docker et le mode swarm<\/h2>\n<p>L&rsquo;application Z\u00e9phir en cours de d\u00e9veloppement utilise Docker : <a href=\"https:\/\/dev-eole.ac-dijon.fr\/projects\/zephir\/\">https:\/\/dev-eole.ac-dijon.fr\/projects\/zephir\/<\/a><\/p>\n<p>Il est convenu que les services d\u00e9velopp\u00e9s dans cette application puissent fonctionner en mode multi-instances : <a href=\"https:\/\/dev-eole.ac-dijon.fr\/doc\/zephir\/\">https:\/\/dev-eole.ac-dijon.fr\/doc\/zephir\/<\/a><\/p>\n<p>Objectifs \u00e0 atteindre :<\/p>\n<ul>\n<li>initialiser un cluster swarm ;<\/li>\n<li>construire l&rsquo;application dans le fichier docker-compose ;<\/li>\n<li>lancer l&rsquo;application sur un seul n\u0153ud ;<\/li>\n<li>int\u00e9grer des n\u0153uds dans le cluster ;<\/li>\n<li>tester la scalabilit\u00e9 du cluster ;<\/li>\n<li>tester la r\u00e9silience de l&rsquo;application.<\/li>\n<\/ul>\n<h2>Installation d&rsquo;un cluster docker en mode swarm<\/h2>\n<p>Par facilit\u00e9 il a \u00e9t\u00e9 d\u00e9cid\u00e9 de partir d&rsquo;une machine virtuelle disponible sur notre infrastructure de d\u00e9veloppement utilis\u00e9e pour le d\u00e9veloppement de l&rsquo;application Z\u00e9phir, cependant il est tout \u00e0 fait possible de partir d&rsquo;une distribution GNU\/Linux et d&rsquo;installer Docker.<\/p>\n<p>Le code source de l&rsquo;atelier est disponible sur Github : <a class=\"external\" href=\"https:\/\/github.com\/gwen21\/swarm.git\">https:\/\/github.com\/gwen21\/swarm.git<\/a><\/p>\n<h3>Pr\u00e9-requis<\/h3>\n<p>Il faut disposer de plusieurs machines Docker engine.<br \/>\nLes ports suivants doivent \u00eatre accessibles entre chaque machine :<\/p>\n<ul>\n<li>TCP\/2377 pour les communications de gestion du cluster<\/li>\n<li>TCP\/7946 et UDP\/7946 pour les communications entre les n\u0153uds<\/li>\n<li>UDP\/4789 pour le trafic r\u00e9seau<\/li>\n<\/ul>\n<h3>Initialisation du cluster sur la premi\u00e8re machine<\/h3>\n<p>Cloner le d\u00e9p\u00f4t : <strong><code>git clone  https:\/\/github.com\/gwen21\/swarm.git &amp;&amp; cd swarm<\/code><\/strong><\/p>\n<p>Initialiser le cluster sur une premi\u00e8re machine virtuelle : <strong><code>docker swarm init<\/code><\/strong><\/p>\n<p>La machine devient swarm manager.<\/p>\n<p>Construire les images Docker sans d\u00e9marrer les conteneurs : <strong><code>docker-compose up --build --no-start<\/code><\/strong><\/p>\n<h3>Joindre des nouveaux n\u0153uds<\/h3>\n<p>Pour un n\u0153ud worker, la commande suivante depuis un manager indique la commande \u00e0 ex\u00e9cuter sur le nouveau n\u0153ud pour qu&rsquo;il devienne worker du cluster : <strong><code>docker swarm join-token worker<\/code><\/strong><\/p>\n<p>Pour un n\u0153ud manager, la commande suivante depuis un manager indique la commande \u00e0 ex\u00e9cuter sur le nouveau n\u0153ud pour qu&rsquo;il devienne manager du cluster : <strong><code>docker swarm join-token manager<\/code><\/strong><\/p>\n<p>Ajouter 2 n\u0153uds worker sur une deuxi\u00e8me et une troisi\u00e8me image virtuelle.<\/p>\n<h3>Visualiser<\/h3>\n<p>Depuis le n\u0153ud manager, lister les n\u0153uds du cluster : <strong><code>docker node ls<\/code><\/strong><\/p>\n<p><strong><code>ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS<br \/>\niheocb4wo1vdfind2psz3w33n * node200 Ready Active Leader<br \/>\nb8jqub7lgcvpsjebeytjmztwf node201 Ready Active<br \/>\nqmxn8ly9okf0zzuui3j202ejq node202 Ready Active<\/code><\/strong><\/p>\n<p>D\u00e9ployer l&rsquo;application, dans le d\u00e9p\u00f4t clon\u00e9 depuis le n\u0153ud manager : <strong><code>docker stack deploy -c docker-compose.yml hackathon<\/code><\/strong><\/p>\n<p>Les services sont d\u00e9ploy\u00e9s sur le cluster, visualiser l&rsquo;\u00e9tat du cluster :<\/p>\n<ul>\n<li>depuis le n\u0153ud manager : <strong><code>docker stack ps hackathon<\/code><\/strong><\/li>\n<\/ul>\n<p><strong><code>ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS<br \/>\n2oc7huepviko hackathon_minio.1 minio\/minio:latest node202 Running Starting 3 seconds ago<br \/>\neyukkhagv1ri hackathon_consul.1 consul:0.9.3 node201 Running Running 9 seconds ago<br \/>\n7aramnxhlqd6 hackathon_swarm_visualizer.1 dockersamples\/visualizer:latest node200 Running Preparing 14 seconds ago<br \/>\nimlxeye2zd6l hackathon_minio.2 minio\/minio:latest node201 Running Starting 3 seconds ago<br \/>\nngjferp2m77v hackathon_minio.3 minio\/minio:latest node202 Running Starting 3 seconds ago<\/code><\/strong><\/p>\n<ul>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager1&gt;:8080<\/code><\/strong>\n<ul>\n<li>Le service <code>hackathon_swarm_visualizer<\/code> est sur le manager<\/li>\n<li>Les 3 instances du service <code>hackathon_minio<\/code> sont r\u00e9parties sur les 2 workers<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2532 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\" alt=\"3 instances du service\" width=\"455\" height=\"586\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png 455w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1-233x300.png 233w\" sizes=\"auto, (max-width: 455px) 100vw, 455px\" \/><\/a><\/p>\n<h2>Scalabilit\u00e9 des services<\/h2>\n<p>Scaler le service hackathon_minio : <strong><code>docker service scale hackathon_minio=10<\/code><\/strong><\/p>\n<p><strong><code>hackathon_minio scaled to 10<br \/>\noverall progress: 10 out of 10 tasks<br \/>\n1\/10: running   [==================================================&gt;]\n2\/10: running   [==================================================&gt;]\n3\/10: running   [==================================================&gt;]\n4\/10: running   [==================================================&gt;]\n5\/10: running   [==================================================&gt;]\n6\/10: running   [==================================================&gt;]\n7\/10: running   [==================================================&gt;]\n8\/10: running   [==================================================&gt;]\n9\/10: running   [==================================================&gt;]\n10\/10: running   [==================================================&gt;]\nverify: Service converged<\/code><\/strong><\/p>\n<ul>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager1&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p>Les 10 instances du service <code>minio<\/code> sont r\u00e9parties sur les 2 workers.<\/p>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2533 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-2.png\" alt=\"10 instances du service\" width=\"333\" height=\"732\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-2.png 333w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-2-136x300.png 136w\" sizes=\"auto, (max-width: 333px) 100vw, 333px\" \/><\/a><\/p>\n<p>Modifier le fichier <code>docker-conpose.yml<\/code> pour p\u00e9renniser les 10 instances du service <code>hackathon_minio<\/code> : <strong><code>sed -i 's\/replicas:.*$\/replicas: 10\/' docker-compose.yml<\/code><\/strong><\/p>\n<p>Augmenter la capacit\u00e9 du cluster en ajoutant un worker et visualiser le cluster :<\/p>\n<ul>\n<li>d\u00e9ployer une machine virtuelle et lancer la commande permettant de joindre un nouveau worker<\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2534 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-1.png\" alt=\"ajout d'un worker\" width=\"434\" height=\"421\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-1.png 434w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-1-300x291.png 300w\" sizes=\"auto, (max-width: 434px) 100vw, 434px\" \/><\/a><\/p>\n<ul>\n<li>actualiser le cluster : <strong><code>docker stack deploy -c docker-compose.yml hackathon<\/code><\/strong><\/li>\n<\/ul>\n<p><strong><code>hackathon_minio<br \/>\noverall progress: 10 out of 10 tasks<br \/>\n1\/10: running   [==================================================&gt;]\n2\/10: running   [==================================================&gt;]\n3\/10: running   [==================================================&gt;]\n4\/10: running   [==================================================&gt;]\n5\/10: running   [==================================================&gt;]\n6\/10: running   [==================================================&gt;]\n7\/10: running   [==================================================&gt;]\n8\/10: running   [==================================================&gt;]\n9\/10: running   [==================================================&gt;]\n10\/10: running   [==================================================&gt;]\nverify: Service converged<\/code><\/strong><\/p>\n<ul>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager1&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2535 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-2.png\" alt=\"r\u00e9partition sur 3 worker\" width=\"436\" height=\"575\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-2.png 436w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-2-227x300.png 227w\" sizes=\"auto, (max-width: 436px) 100vw, 436px\" \/><\/a><\/p>\n<p>Les 10 instances du service <code>hackathon_minio<\/code> sont r\u00e9parties sur les 3 workers.<\/p>\n<h2>Changement du r\u00f4le d&rsquo;un n\u0153ud<\/h2>\n<p>Passer un n\u0153ud worker en manager et visualiser le cluster :<\/p>\n<ul>\n<li>depuis le n\u0153ud manager : <strong><code>docker node promote &lt;worker1&gt;<\/code><\/strong><\/li>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager1&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2536 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-3.png\" alt=\"suppresision d'un worker 10 instances du service sur 2 worker\" width=\"436\" height=\"669\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-3.png 436w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-3-196x300.png 196w\" sizes=\"auto, (max-width: 436px) 100vw, 436px\" \/><\/a><\/p>\n<p>Les 10 instances du service <code>hackathon_minio<\/code> sont r\u00e9parties sur les 2 workers.<\/p>\n<p>Passer le premier n\u0153ud manager en worker et visualiser le cluster :<\/p>\n<ul>\n<li>cloner le d\u00e9p\u00f4t depuis le deuxi\u00e8me n\u0153ud manager\n<ul>\n<li><strong><code>git clone  https:\/\/github.com\/gwen21\/swarm.git &amp;&amp; cd swarm<\/code><\/strong><\/li>\n<\/ul>\n<\/li>\n<li>indiquer 10 instances du service <code>hackathon_minio<\/code>*\n<ul>\n<li><strong><code>sed -i 's\/replicas:.*$\/replicas: 10\/' docker-compose.yml<\/code><\/strong><\/li>\n<\/ul>\n<\/li>\n<li>depuis le deuxi\u00e8me n\u0153ud manager : <strong><code>docker node demote &lt;manager1&gt;<\/code><\/strong><\/li>\n<li>actualiser le cluster depuis le deuxi\u00e8me n\u0153ud manager\n<ul>\n<li><strong><code>docker stack deploy -c docker-compose.yml hackathon<\/code><\/strong><\/li>\n<\/ul>\n<\/li>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager2&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2537 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-4.png\" alt=\"r\u00e9partition sur 3 worker\" width=\"436\" height=\"669\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-4.png 436w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-4-196x300.png 196w\" sizes=\"auto, (max-width: 436px) 100vw, 436px\" \/><\/a><\/p>\n<p>Le premier n\u0153ud est pass\u00e9 en worker , le service <code>hackathon_visualizer<\/code> passe sur le nouveau n\u0153ud manager et les 10 instances du service <code>hackathon_minio<\/code> sont r\u00e9parties sur les 3 workers.<\/p>\n<p>Augmenter le nombre d&rsquo;instance du service <strong><code>hackathon_minio<\/code><\/strong> :<\/p>\n<ul>\n<li>depuis le deuxi\u00e8me n\u0153ud <strong>manager<\/strong> :<strong><code>docker service scale hackathon_minio=15<\/code><\/strong><\/li>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager2&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2540 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-5.png\" alt=\"15 instances du service sur 3 worker\" width=\"438\" height=\"750\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-5.png 438w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-5-175x300.png 175w\" sizes=\"auto, (max-width: 438px) 100vw, 438px\" \/><\/a><\/p>\n<p>Les 15 instances du service <strong><code>hackathon_minio<\/code><\/strong> sont r\u00e9parties sur les 3 <strong>workers<\/strong><\/p>\n<h2>Tester la r\u00e9silience du cluster<\/h2>\n<p>Tuer sauvagement le dernier n\u0153ud worker (&lt;worker3&gt;) et visualiser le cluster :<\/p>\n<ul>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager2&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2542 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-6.png\" alt=\"arr\u00eat brutale d'un worker\" width=\"437\" height=\"693\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-6.png 437w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-4nodes-6-189x300.png 189w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><\/p>\n<p>Le worker tu\u00e9 passe au rouge et les 15 instances du service <code>hackathon_minio<\/code> sont r\u00e9parties sur les 2 workers restants.<\/p>\n<p>Supprimer le n\u0153ud tu\u00e9 du cluster et visualiser le cluster :<\/p>\n<ul>\n<li>depuis le deuxi\u00e8me manager : <strong><code>docker node rm &lt;worker3&gt;<\/code><\/strong><\/li>\n<li>depuis un navigateur : <strong><code>http:\/\/&lt;IP_manager2&gt;:8080<\/code><\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2543 size-full\" src=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-3.png\" alt=\"disparition du 3\u00e8me worker\" width=\"332\" height=\"712\" srcset=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-3.png 332w, https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-3-140x300.png 140w\" sizes=\"auto, (max-width: 332px) 100vw, 332px\" \/><\/a><\/p>\n<p>Le troisi\u00e8me worker dispara\u00eet.<\/p>\n<h2>Conclusion<\/h2>\n<p>Nous avons pu exploiter rapidement Docker en mode swarm. Plusieurs machines peuvent \u00eatre pilot\u00e9es par Docker. Ce travail peut servir de base au d\u00e9veloppement de Z\u00e9phir. Cependant le passage en mode swarm sur cette application n\u00e9cessiterait quelques adaptations :<\/p>\n<ul>\n<li>par d\u00e9faut, Docker tourne en mode single-host, les conteneurs ne sont d\u00e9ploy\u00e9s que sur la machine h\u00f4te ;<\/li>\n<li>la syntaxe du fichier de configuration docker-compose doit passer \u00e0 3.2 ;<\/li>\n<li>les conteneurs doivent \u00eatre construits \u00e0 l&rsquo;avance avec docker-compose sans lancer l&rsquo;application ;<\/li>\n<li>le fichier de configuration docker-compose devra d\u00e9crire le mode et les contraintes de d\u00e9ploiement\u00a0 ;<\/li>\n<li>le lancement de l&rsquo;application se fait avec docker stack une fois les conteneurs construits.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;objectif de ce groupe de travail \u00e9tait de monter en comp\u00e9tences sur l&rsquo;utilisation de Docker en mode swarm. Swarm est un mode natif de Docker depuis la version 1.13. Il permet d&rsquo;utiliser un groupe de machines ex\u00e9cutant Docker comme un seul Docker Engine. On parlera de grappe ou de cluster. Les commandes sont ex\u00e9cut\u00e9es sur [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,3],"tags":[14,50,13,66,22],"class_list":["post-2358","post","type-post","status-publish","format-standard","hentry","category-evenements","category-technique","tag-compte-rendu","tag-docker","tag-hackathon","tag-swarm","tag-zephir"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hackathon : compte rendu du groupe Docker en mode swarm - EOLE<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hackathon : compte rendu du groupe Docker en mode swarm - EOLE\" \/>\n<meta property=\"og:description\" content=\"L&rsquo;objectif de ce groupe de travail \u00e9tait de monter en comp\u00e9tences sur l&rsquo;utilisation de Docker en mode swarm. Swarm est un mode natif de Docker depuis la version 1.13. Il permet d&rsquo;utiliser un groupe de machines ex\u00e9cutant Docker comme un seul Docker Engine. On parlera de grappe ou de cluster. Les commandes sont ex\u00e9cut\u00e9es sur [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\" \/>\n<meta property=\"og:site_name\" content=\"EOLE\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-12T16:24:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"455\" \/>\n\t<meta property=\"og:image:height\" content=\"586\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"G\u00e9rald Schwartzmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PoleEole\" \/>\n<meta name=\"twitter:site\" content=\"@PoleEole\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00e9rald Schwartzmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\"},\"author\":{\"name\":\"G\u00e9rald Schwartzmann\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/a2a841fd5a669c93f8d7eec693fd2c9d\"},\"headline\":\"Hackathon : compte rendu du groupe Docker en mode swarm\",\"datePublished\":\"2018-03-12T16:24:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\"},\"wordCount\":888,\"image\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\",\"keywords\":[\"compte rendu\",\"Docker\",\"Hackathon\",\"Swarm\",\"Z\u00e9phir\"],\"articleSection\":[\"\u00c9v\u00e9nements\",\"Technique\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\",\"url\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\",\"name\":\"Hackathon : compte rendu du groupe Docker en mode swarm - EOLE\",\"isPartOf\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\",\"datePublished\":\"2018-03-12T16:24:25+00:00\",\"author\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/a2a841fd5a669c93f8d7eec693fd2c9d\"},\"breadcrumb\":{\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage\",\"url\":\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\",\"contentUrl\":\"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png\",\"width\":455,\"height\":586},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/pcll.ac-dijon.fr\/eole\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hackathon : compte rendu du groupe Docker en mode swarm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/#website\",\"url\":\"https:\/\/pcll.ac-dijon.fr\/eole\/\",\"name\":\"EOLE\",\"description\":\"Ensemble Ouvert Libre Evolutif\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/pcll.ac-dijon.fr\/eole\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/a2a841fd5a669c93f8d7eec693fd2c9d\",\"name\":\"G\u00e9rald Schwartzmann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedd4f324d53737b76727dd63247ebf829793da57f3b464d5c50e7764f4b8895?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedd4f324d53737b76727dd63247ebf829793da57f3b464d5c50e7764f4b8895?s=96&d=mm&r=g\",\"caption\":\"G\u00e9rald Schwartzmann\"},\"url\":\"https:\/\/pcll.ac-dijon.fr\/eole\/author\/gerald\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hackathon : compte rendu du groupe Docker en mode swarm - EOLE","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/","og_locale":"fr_FR","og_type":"article","og_title":"Hackathon : compte rendu du groupe Docker en mode swarm - EOLE","og_description":"L&rsquo;objectif de ce groupe de travail \u00e9tait de monter en comp\u00e9tences sur l&rsquo;utilisation de Docker en mode swarm. Swarm est un mode natif de Docker depuis la version 1.13. Il permet d&rsquo;utiliser un groupe de machines ex\u00e9cutant Docker comme un seul Docker Engine. On parlera de grappe ou de cluster. Les commandes sont ex\u00e9cut\u00e9es sur [&hellip;]","og_url":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/","og_site_name":"EOLE","article_published_time":"2018-03-12T16:24:25+00:00","og_image":[{"width":455,"height":586,"url":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png","type":"image\/png"}],"author":"G\u00e9rald Schwartzmann","twitter_card":"summary_large_image","twitter_creator":"@PoleEole","twitter_site":"@PoleEole","twitter_misc":{"\u00c9crit par":"G\u00e9rald Schwartzmann","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#article","isPartOf":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/"},"author":{"name":"G\u00e9rald Schwartzmann","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/a2a841fd5a669c93f8d7eec693fd2c9d"},"headline":"Hackathon : compte rendu du groupe Docker en mode swarm","datePublished":"2018-03-12T16:24:25+00:00","mainEntityOfPage":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/"},"wordCount":888,"image":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage"},"thumbnailUrl":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png","keywords":["compte rendu","Docker","Hackathon","Swarm","Z\u00e9phir"],"articleSection":["\u00c9v\u00e9nements","Technique"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/","url":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/","name":"Hackathon : compte rendu du groupe Docker en mode swarm - EOLE","isPartOf":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/#website"},"primaryImageOfPage":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage"},"image":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage"},"thumbnailUrl":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png","datePublished":"2018-03-12T16:24:25+00:00","author":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/a2a841fd5a669c93f8d7eec693fd2c9d"},"breadcrumb":{"@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#primaryimage","url":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png","contentUrl":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-content\/uploads\/sites\/4\/2018\/02\/Swarm-3nodes-1.png","width":455,"height":586},{"@type":"BreadcrumbList","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/hackathon-compte-rendu-groupe-docker-mode-swarm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/pcll.ac-dijon.fr\/eole\/"},{"@type":"ListItem","position":2,"name":"Hackathon : compte rendu du groupe Docker en mode swarm"}]},{"@type":"WebSite","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/#website","url":"https:\/\/pcll.ac-dijon.fr\/eole\/","name":"EOLE","description":"Ensemble Ouvert Libre Evolutif","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pcll.ac-dijon.fr\/eole\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/a2a841fd5a669c93f8d7eec693fd2c9d","name":"G\u00e9rald Schwartzmann","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/pcll.ac-dijon.fr\/eole\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bedd4f324d53737b76727dd63247ebf829793da57f3b464d5c50e7764f4b8895?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedd4f324d53737b76727dd63247ebf829793da57f3b464d5c50e7764f4b8895?s=96&d=mm&r=g","caption":"G\u00e9rald Schwartzmann"},"url":"https:\/\/pcll.ac-dijon.fr\/eole\/author\/gerald\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/posts\/2358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/comments?post=2358"}],"version-history":[{"count":14,"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/posts\/2358\/revisions"}],"predecessor-version":[{"id":2550,"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/posts\/2358\/revisions\/2550"}],"wp:attachment":[{"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/media?parent=2358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/categories?post=2358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pcll.ac-dijon.fr\/eole\/wp-json\/wp\/v2\/tags?post=2358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}