From 747b4c07dd015f89652640ee2f722e066fff3c4b Mon Sep 17 00:00:00 2001 From: Romain Dessort Date: Tue, 10 Apr 2018 12:19:49 -0400 Subject: [PATCH] =?UTF-8?q?HowtoDocker=20:=20ajout=20info=20pour=20utilisa?= =?UTF-8?q?tion=20avanc=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoDocker.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/HowtoDocker.md b/HowtoDocker.md index 0e32f6ed..22305e6f 100644 --- a/HowtoDocker.md +++ b/HowtoDocker.md @@ -241,4 +241,104 @@ Dockerfile REPOSITORY TAG IMAGE ID CREATED SIZE mariadb latest 4bea99cda08c 8 minutes ago 470MB debian stretch 5b712ae16dd7 3 days ago 100MB -~~~ \ No newline at end of file +~~~ + +## Utilisation avancée + +### Swarm + +Swarm permet de mettre en communication plusieurs hôtes Docker afin d'en former +un cluster. On pourra ainsi déployer des applications multi-conteneurs sur +plusieurs machines. + +Initialiser le cluster : + +~~~ +docker0# docker swarm init +~~~ + +Joindre les autres machines au cluster créé (il vous suffit généralement de copier-coller la commande retournée par `docker swarm init` : + +~~~ +docker1# docker swarm join --token +~~~ + +Par défaut la machine sur laquelle le cluster a été initialisée a le rôle de +_manager_, et les suivantes ont le rôle de _worker_. On ne peut déployer de +nouveaux services que depuis les _managers_. Les _workers_ se contentent de +recevoir les services à rouler. + +Pour ajouter des machines plus tard, il suffit de générer un nouveau token : + +~~~ +docker0# docker swarm join-token +~~~ + +### Compose/stack + +Docker permet de déployer des infrastructures multi-conteneurs (_stacks_) simplement à l'aide de `docker stack` (anciennement Docker Compose, logiciel tier). Il est très utile dans le cadre de déploiement sur un cluster Swarm. + +L'infra est à décrire dans un fichier YAML. + +Déployer (ou mettre à jour à chaud) une nouvelle _stack_ : + +~~~ +# docker stack deploy -c +~~~ + +Lister les _stacks_ : + +~~~ +# docker stack ls +~~~ + +Lister les _services_, toutes _stacks_ confondues ou pour une _stack_ donnée : + +~~~ +# docker service ls +# docker stack services +~~~ + +Lister les _tasks_ (replicas) d'une _stack_ ou d'un _service donnée : + +~~~ +# docker stack ps +# docker service ps +~~~ + +Supprimer une _stack_ : + +~~~ +# docker stack rm +~~~ + +### Réseaux + +Docker permet de gérer différentes topologies de réseaux pour connecter les conteneurs entre eux à l'aide de `docker network`. + +_drivers_ réseau supportés : + + - _bridge_ : utilise les bridges Linux ; + - _overlay_ : utilisé dans le cas d'un cluster Swarm, permet d'avoir un + réseau unique partagé entre tous les hôtes Docker et permet de faire du + load-balancing entre les conteneurs (replicas) d'un service ; + - _macvlan_ : permet d'assigner directement des adresses IP publiques aux + conteneurs, donc aucun NAT n'est fait contrairement aux précédents. + +Créer un réseau : + +~~~ +# docker create -d […] +~~~ + +Lister les réseaux créés : + +~~~ +# docker network ls +~~~ + +Informations détaillées sur un réseau : + +~~~ +# docker network inspect +~~~