Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| elearning:workbooks:docker2:drf02 [2021/04/12 11:38] – admin | elearning:workbooks:docker2:drf02 [2022/04/29 07:57] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ~~PDF: | ~~PDF: | ||
| - | Version : **2021.01** | + | Version : **2022.01** |
| Dernière mise-à-jour : ~~LASTMOD~~ | Dernière mise-à-jour : ~~LASTMOD~~ | ||
| - | ======DOF203 - Gestion du Réseau avec Swarm====== | + | ======DOF203 - Gestion du Réseau avec Docker====== |
| =====Contenu du Module===== | =====Contenu du Module===== | ||
| - | * **DOF203 - Gestion du Réseau avec Swarm** | + | * **DOF203 - Gestion du Réseau avec Docker** |
| * Contenu du Module | * Contenu du Module | ||
| * L' | * L' | ||
| - | * LAB #1 - Gestion du Réseau overlay | + | * LAB #1 - Les Réseaux Docker ayant un Scope Local |
| - | * 1.1 - Création d'un Réseau overlay | + | * 1.1 - Bridge |
| - | * 1.2 - Création d'un Service | + | * Liens |
| - | * 1.3 - Déplacer le Service vers un autre Réseau overlay | + | * 1.2 - Host |
| - | * 1.4 - DNS container discovery | + | * 1.3 - None |
| - | * 1.5 - Création d'un Réseau overlay Personnalisé | + | * 1.4 - Lancer Wordpress dans un container |
| - | * LAB #2 - Gestion de l' | + | * 1.5 - Gestion d'une Architecture de Microservices |
| - | * 2.1 - Rappel - Mise en Place avec Docker avec un réseau Bridge et des liens | + | * LAB #2 - Gestion du Réseau overlay |
| - | * 2.2 - Mise en Place avec Docker Swarm avec des réseaux Overlay | + | * 2.1 - Création d'un Réseau overlay |
| + | * 2.2 - Création d'un Service | ||
| + | * 2.3 - Déplacer le Service vers un autre Réseau overlay | ||
| + | * 2.4 - DNS container discovery | ||
| + | * 2.5 - Création d'un Réseau overlay Personnalisé | ||
| + | * LAB #3 - Gestion de l' | ||
| + | * 3.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay | ||
| =====L' | =====L' | ||
| Ligne 35: | Ligne 41: | ||
| {{ : | {{ : | ||
| - | En plus des réseaux **bridge**, **host** et **none**, déjà vus dans le module | + | =====LAB #1 - Les Réseaux Docker ayant un Scope Local===== |
| + | |||
| + | Docker fournit trois réseaux | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | NETWORK ID NAME DRIVER | ||
| + | 495b3db75b0d | ||
| + | e1ed4de2f947 | ||
| + | 6bda460c97c6 | ||
| + | </ | ||
| + | |||
| + | ====1.1 - Bridge==== | ||
| + | |||
| + | Ce type de réseau est limité aux conteneurs d'un hôte unique exécutant Docker. Les conteneurs ne peuvent communiquer qu' | ||
| + | |||
| + | Par défaut Docker fonctionne en mode **Pont** ou (// | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | 3: docker0: < | ||
| + | link/ether 02: | ||
| + | inet 172.17.0.1/ | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Démarrez un conteneur dénommé **resotest** à partir d'une image de CentOS : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | 2169360fcbfdbd6e68ea969a95edeb6fc42603c23ee42f03ceec286276519855 | ||
| + | </ | ||
| + | |||
| + | Lancez ensuite la commande **docker network inspect | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important> | ||
| + | **Important** : Notez ici que le conteneur **resotest** ne dispose pas de la même adresse que l' | ||
| + | </ | ||
| + | |||
| + | Vous pouvez déconnecter un conteneur du réseau en utilisant la commande suivante : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | root@debian9: | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | Créez maintenant votre propre réseau ponté appelé **my-bridged-network** : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | ceb7ba7493933c55d181bc92b1f799ca07bfe84b168d52a6ac648c1a906093f3 | ||
| + | root@debian9: | ||
| + | NETWORK ID NAME | ||
| + | 495b3db75b0d | ||
| + | e1ed4de2f947 | ||
| + | ceb7ba749393 | ||
| + | 6bda460c97c6 | ||
| + | </ | ||
| + | |||
| + | Bien évidement, ce réseau est actuellement vide : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | Lancez maintenant deux conteneurs et consultez les informations concernant le réseau : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | 9f36a628c72b383edfd4dc13ee4e4b2eaf5be0078d780f0334fcb8be0d977d0e | ||
| + | |||
| + | root@debian9: | ||
| + | aaed3bc8e404ee1bccd6c87b39de32332940b5391514691fc70188edb17c1d7c | ||
| + | |||
| + | root@debian9: | ||
| + | {" | ||
| + | |||
| + | root@debian9: | ||
| + | {" | ||
| + | |||
| + | root@debian9: | ||
| + | 172.17.0.3 | ||
| + | |||
| + | root@debian9: | ||
| + | 172.17.0.4 | ||
| + | </ | ||
| + | |||
| + | Mettez le conteneur | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | |||
| + | root@debian9: | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | |||
| + | root@debian9: | ||
| + | 172.17.0.3172.25.0.2 | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important> | ||
| + | **Important** : Notez que le conteneur **centos1** se trouve dans deux réseaux. | ||
| + | </ | ||
| + | |||
| + | Faites la même chose pour le conteneur **centos2** : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | |||
| + | root@debian9: | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | |||
| + | root@debian9: | ||
| + | 172.17.0.4172.25.0.3 | ||
| + | </ | ||
| + | |||
| + | Connectez-vous au conteneur **centos1** en lançant bash : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | </ | ||
| + | |||
| + | Vérifiez que la connectivité fonctionne : | ||
| + | |||
| + | < | ||
| + | [root@9f36a628c72b /]# ping 172.25.0.3 | ||
| + | PING 172.25.0.3 (172.25.0.3) 56(84) bytes of data. | ||
| + | 64 bytes from 172.25.0.3: icmp_seq=1 ttl=64 time=0.100 ms | ||
| + | 64 bytes from 172.25.0.3: icmp_seq=2 ttl=64 time=0.050 ms | ||
| + | 64 bytes from 172.25.0.3: icmp_seq=3 ttl=64 time=0.050 ms | ||
| + | ^C | ||
| + | --- 172.25.0.3 ping statistics --- | ||
| + | 3 packets transmitted, | ||
| + | rtt min/ | ||
| + | </ | ||
| + | |||
| + | Les options possibles au niveau de la gestion du réseau sont vaste. Voici deux exemples supplémentaires. | ||
| + | |||
| + | Il est possible d' | ||
| + | |||
| + | < | ||
| + | [root@9f36a628c72b /]# exit | ||
| + | exit | ||
| + | root@debian9: | ||
| + | mongo2 | ||
| + | root@debian9: | ||
| + | mongo2 | ||
| + | root@debian9: | ||
| + | root@735599480b45:/# | ||
| + | search home | ||
| + | nameserver 8.8.8.8 | ||
| + | root@735599480b45:/# | ||
| + | </ | ||
| + | |||
| + | ou de passer une entrée pour le fichier **/ | ||
| + | |||
| + | < | ||
| + | root@735599480b45:/# | ||
| + | exit | ||
| + | root@debian9: | ||
| + | mongo2 | ||
| + | root@debian9: | ||
| + | mongo2 | ||
| + | root@debian9: | ||
| + | root@718e7eab814f:/# | ||
| + | 127.0.0.1 localhost | ||
| + | :: | ||
| + | fe00:: | ||
| + | ff00:: | ||
| + | ff02:: | ||
| + | ff02:: | ||
| + | 127.0.0.1 mickeymouse | ||
| + | 172.17.0.2 718e7eab814f | ||
| + | </ | ||
| + | |||
| + | ===Liens=== | ||
| + | |||
| + | Le mécanisme des liens entre conteneurs est très puissant | ||
| + | |||
| + | < | ||
| + | root@332aa9930f30:/# | ||
| + | exit | ||
| + | |||
| + | root@debian9: | ||
| + | 6a315259b2946c3bf2bb69f608cbe910d87edaadedb4f805e7a4dbf6af1eb916 | ||
| + | |||
| + | root@debian9: | ||
| + | CONTAINER ID IMAGE | ||
| + | 6a315259b294 | ||
| + | 332aa9930f30 | ||
| + | aaed3bc8e404 | ||
| + | 9f36a628c72b | ||
| + | 2169360fcbfd | ||
| + | ea239635e141 | ||
| + | 21b0490a93dd | ||
| + | bdb4bc0f81de | ||
| + | f5b45072b831 | ||
| + | 9731a48f126a | ||
| + | eacd70596e23 | ||
| + | cffb4456e9c4 | ||
| + | |||
| + | root@debian9: | ||
| + | |||
| + | [root@6a315259b294 /]# ping centos2 | ||
| + | PING alias (172.17.0.4) 56(84) bytes of data. | ||
| + | 64 bytes from alias (172.17.0.4): | ||
| + | 64 bytes from alias (172.17.0.4): | ||
| + | 64 bytes from alias (172.17.0.4): | ||
| + | 64 bytes from alias (172.17.0.4): | ||
| + | ^C | ||
| + | --- alias ping statistics --- | ||
| + | 4 packets transmitted, 4 received, 0% packet loss, time 2999ms | ||
| + | rtt min/ | ||
| + | |||
| + | [root@6a315259b294 /]# cat / | ||
| + | 127.0.0.1 localhost | ||
| + | :: | ||
| + | fe00:: | ||
| + | ff00:: | ||
| + | ff02:: | ||
| + | ff02:: | ||
| + | 172.17.0.4 alias aaed3bc8e404 centos2 | ||
| + | 172.17.0.2 6a315259b294 | ||
| + | |||
| + | [root@6a315259b294 /]# exit | ||
| + | exit | ||
| + | |||
| + | root@debian9: | ||
| + | 172.17.0.2 | ||
| + | </ | ||
| + | |||
| + | Notez cependant qu le lien est unidirectionnel : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | |||
| + | [root@aaed3bc8e404 /]# ping centos3 | ||
| + | ping: centos3: Name or service not known | ||
| + | |||
| + | [root@aaed3bc8e404 /]# ping 172.17.0.2 | ||
| + | PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data. | ||
| + | 64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.054 ms | ||
| + | 64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.035 ms | ||
| + | 64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.051 ms | ||
| + | 64 bytes from 172.17.0.2: icmp_seq=4 ttl=64 time=0.071 ms | ||
| + | ^C | ||
| + | --- 172.17.0.2 ping statistics --- | ||
| + | 4 packets transmitted, | ||
| + | rtt min/ | ||
| + | |||
| + | [root@aaed3bc8e404 /]# | ||
| + | </ | ||
| + | |||
| + | Dans le cas ci-dessus, **centos2** peut atteindre **centos3** en utilisant l' | ||
| + | |||
| + | < | ||
| + | [root@aaed3bc8e404 /]# exit | ||
| + | exit | ||
| + | root@debian9: | ||
| + | 172.17.0.4172.25.0.3 | ||
| + | </ | ||
| + | |||
| + | ====1.2 - Host==== | ||
| + | |||
| + | Ce type de réseau est utilisé | ||
| + | |||
| + | Dans le cas de la machine virtuelle, l' | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | 2: ens18: < | ||
| + | link/ether 08: | ||
| + | inet 10.0.2.60/ | ||
| + | | ||
| + | inet6 fe80:: | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Démarrez un conteneur à partir de l' | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | [root@debian9 /]# ip a | ||
| + | 1: lo: < | ||
| + | link/ | ||
| + | inet 127.0.0.1/8 scope host lo | ||
| + | | ||
| + | inet6 ::1/128 scope host | ||
| + | | ||
| + | 2: ens18: < | ||
| + | link/ether 08: | ||
| + | inet 10.0.2.60/ | ||
| + | | ||
| + | inet6 fe80:: | ||
| + | | ||
| + | 3: docker0: < | ||
| + | link/ether 02: | ||
| + | inet 172.17.0.1/ | ||
| + | | ||
| + | inet6 fe80:: | ||
| + | | ||
| + | [root@debian9 /]# hostname | ||
| + | debian9 | ||
| + | [root@debian9 /]# exit | ||
| + | </ | ||
| + | |||
| + | Le but de ce type de réseau est de permettre l' | ||
| + | |||
| + | Pour cette raison, dans le cas de l' | ||
| + | |||
| + | <WRAP center round important 50%> | ||
| + | **Important** : Notez que le réseau de type **host** ne fonctionne que sous Linux. Il est donc incompatible avec Docker Desktop pour Mac, Docker Desktop pour Windows et Docker EE pour Windows Server. | ||
| + | </ | ||
| + | |||
| + | ====1.3 - None==== | ||
| + | |||
| + | Ce type de réseau est utilisé principalement dans le cas de l' | ||
| + | |||
| + | Il est donc possible de lancer un conteneur totalement étanche grâce au réseau **none** : | ||
| + | |||
| + | < | ||
| + | root@718e7eab814f:/# | ||
| + | exit | ||
| + | root@debian9: | ||
| + | mongo2 | ||
| + | root@debian9: | ||
| + | mongo2 | ||
| + | root@debian9: | ||
| + | root@332aa9930f30:/# | ||
| + | </ | ||
| + | |||
| + | ====1.4 - Lancer Wordpress dans un container==== | ||
| + | |||
| + | Créez le répertoire ~/wordpress et placez-vous dedans : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | </ | ||
| + | |||
| + | Créez un conteneur dénommé **wordpressdb** à partir de l' | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | Unable to find image ' | ||
| + | latest: Pulling from library/ | ||
| + | f2b6b4884fc8: | ||
| + | 26d8bdca4f3e: | ||
| + | 74f09e820cce: | ||
| + | 5390f1fe4554: | ||
| + | 3d3f1706a741: | ||
| + | 2942f66426ea: | ||
| + | 97ee11d39c75: | ||
| + | 590c46ef722b: | ||
| + | 32eb4b9666e5: | ||
| + | fc883f98a064: | ||
| + | bb8bee61bc1e: | ||
| + | Digest: sha256: | ||
| + | Status: Downloaded newer image for mariadb: | ||
| + | 67831dacf002bdc21dc79b0e8483f538235d00ddd2e8aae175ef3ebf189ae14d | ||
| + | </ | ||
| + | |||
| + | Vérifiez que le conteneur fonctionne : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | CONTAINER ID IMAGE | ||
| + | 67831dacf002 | ||
| + | </ | ||
| + | |||
| + | Créez un conteneur appellé **wordpress** lié au conteneur wordpressdb : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | Unable to find image ' | ||
| + | latest: Pulling from library/ | ||
| + | 2a72cbf407d6: | ||
| + | 273cd543cb15: | ||
| + | ec5ac8875de7: | ||
| + | 9106e19b56c1: | ||
| + | ee2f70ac7c7d: | ||
| + | 7257ad6985e8: | ||
| + | 18f5c2055da2: | ||
| + | 85293a6fdd80: | ||
| + | 9e797eeb0c14: | ||
| + | f16178842884: | ||
| + | 13899c06d3f8: | ||
| + | 70c27fe4c3c5: | ||
| + | d32c8ad2d9d7: | ||
| + | 07fe445494e6: | ||
| + | 63b8de7b32fe: | ||
| + | e4b721952e22: | ||
| + | d9ede6dd6f74: | ||
| + | 0af4f74bfd92: | ||
| + | e4e7c47b969f: | ||
| + | 69aff47f3112: | ||
| + | Digest: sha256: | ||
| + | Status: Downloaded newer image for wordpress: | ||
| + | 9eb2f7fbfbd25307ed2f463c7eb3bef40bfa556174e68750bb76b8d032546129 | ||
| + | </ | ||
| + | |||
| + | Vérifiez que le conteneur fonctionne : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | CONTAINER ID IMAGE | ||
| + | 9eb2f7fbfbd2 | ||
| + | 67831dacf002 | ||
| + | </ | ||
| + | |||
| + | Vérifiez que le Wordpress fonctionne : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | References | ||
| + | |||
| + | 1. https:// | ||
| + | |||
| + | root@debian9: | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | |||
| + | root@debian9: | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | References | ||
| + | |||
| + | 1. https:// | ||
| + | </ | ||
| + | |||
| + | ====1.5 | ||
| + | |||
| + | Vous allez mettre en place une application simple sous forme de microservices, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Dans cette application le conteneur **voting-app** permet de voter pour des **chats** ou des **chiens**. Cette application tourne sous Python et fournit une interface HTML : | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Lors de la vote, le résultat de celle-ci est stocké dans **Redis** dans une base de données en mémoire. Le résultat est ensuite passé au conteneur **Worker** qui tourne sous .NET et qui met à jour la base de données persistante dans le conteneur **db** qui tourne sous PostgreSQL. | ||
| + | |||
| + | L' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Cette application peut être mise en place sous docker avec les commandes suivantes : | ||
| + | |||
| + | < | ||
| + | docker run -d --name=redis redis | ||
| + | docker run -d --name=db -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres postgres: | ||
| + | docker run -d --name=vote -p 5000:80 --link redis:redis dockersamples/ | ||
| + | docker run -d --name=result -p 5001:80 --link db:db dockersamples/ | ||
| + | docker run -d --name=worker --link db:db --link redis:redis dockersamples/ | ||
| + | </ | ||
| + | |||
| + | Cette solution utilise un réseau de type Bridge. Ce type de réseau est limité aux conteneurs d'un hôte unique exécutant Docker. Les conteneurs ne peuvent communiquer qu' | ||
| + | |||
| + | Ouvrez le navigateur web **Firefox** ou **Chrome** dans **votre** machine | ||
| + | |||
| + | ^ ID ^ URL ( Notez http: et non https: ) ^ | ||
| + | | Trainee10 | http:// | ||
| + | | Trainee11 | http:// | ||
| + | | Trainee12 | http:// | ||
| + | | Trainee13 | http:// | ||
| + | | Trainee14 | http:// | ||
| + | | Trainee15 | http:// | ||
| + | | Trainee16 | http:// | ||
| + | | Trainee17 | http:// | ||
| + | | Trainee18 | http:// | ||
| + | | Trainee19 | http:// | ||
| + | | Trainee20 | http:// | ||
| + | | Trainee21 | http:// | ||
| + | | Trainee22 | http:// | ||
| + | | Trainee23 | http:// | ||
| + | | Trainee24 | http:// | ||
| + | | Trainee25 | http:// | ||
| + | | Trainee26 | http:// | ||
| + | | Trainee27 | http:// | ||
| + | | Trainee28 | http:// | ||
| + | | Trainee29 | http:// | ||
| + | |||
| + | Dans la boîte de connexion d' | ||
| + | |||
| + | Cliquez sur la connexion **TraineeXX_VNC** et testez ensuite votre application en utilisant le navigateur web de la machine virtuelle. | ||
| + | |||
| + | =====LAB #2 - Gestion du Réseau overlay===== | ||
| + | |||
| + | En plus des réseaux **bridge**, **host** et **none**, Docker propose deux autres types de réseaux, à savoir **overlay** et **macvlan**. Ce module concerne overlay. Pour plus d' | ||
| Comme son nom indique, un réseau overlay est un réseau qui se positionne au-dessus du réseau des hôtes. Lors de la création d'un réseau overlay, celui-ci n'est disponible par défaut qu'aux services swarm. Par contre il est possible de connecter des conteneurs autonomes au réseau overlay si l' | Comme son nom indique, un réseau overlay est un réseau qui se positionne au-dessus du réseau des hôtes. Lors de la création d'un réseau overlay, celui-ci n'est disponible par défaut qu'aux services swarm. Par contre il est possible de connecter des conteneurs autonomes au réseau overlay si l' | ||
| Ligne 45: | Ligne 744: | ||
| </ | </ | ||
| - | =====LAB #1 - Gestion du Réseau overlay===== | + | Commencez par re-créer un swarm en utilisant les machines virtuelles **manager**, |
| - | + | ||
| - | Commencez par re-créer un swarm : | + | |
| < | < | ||
| Ligne 66: | Ligne 763: | ||
| </ | </ | ||
| - | ou | + | Connectez-vous au **worker1** |
| - | + | ||
| - | < | + | |
| - | trainee@traineeXX: | + | |
| - | ... | + | |
| - | root@manager: | + | |
| - | Node left the swarm. | + | |
| - | root@manager: | + | |
| - | Swarm initialized: | + | |
| - | + | ||
| - | To add a worker to this swarm, run the following command: | + | |
| - | + | ||
| - | docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.42: | + | |
| - | + | ||
| - | To add a manager to this swarm, run ' | + | |
| - | root@manager: | + | |
| - | trainee@manager:~# exit | + | |
| - | </ | + | |
| < | < | ||
| Ligne 96: | Ligne 776: | ||
| </ | </ | ||
| - | ou | + | Connectez-vous au **worker2** |
| - | + | ||
| - | < | + | |
| - | trainee@traineeXX: | + | |
| - | ... | + | |
| - | root@worker1: | + | |
| - | Node left the swarm. | + | |
| - | root@worker1: | + | |
| - | This node joined a swarm as a worker. | + | |
| - | root@worker1: | + | |
| - | trainee@worker1:~# exit | + | |
| - | </ | + | |
| < | < | ||
| Ligne 115: | Ligne 784: | ||
| Node left the swarm. | Node left the swarm. | ||
| root@worker2: | root@worker2: | ||
| - | This node joined a swarm as a worker. | ||
| - | root@worker2: | ||
| - | trainee@worker2: | ||
| - | </ | ||
| - | |||
| - | ou : | ||
| - | |||
| - | < | ||
| - | trainee@traineeXX: | ||
| - | ... | ||
| - | root@worker2: | ||
| - | Node left the swarm. | ||
| - | root@worker2: | ||
| This node joined a swarm as a worker. | This node joined a swarm as a worker. | ||
| root@worker2: | root@worker2: | ||
| Ligne 137: | Ligne 793: | ||
| < | < | ||
| trainee@traineeXX: | trainee@traineeXX: | ||
| - | ... | ||
| - | root@manager: | ||
| - | ID HOSTNAME | ||
| - | b85hxlixbr1mh1txd1hrfe4us * | ||
| - | 4sui75vvdhmet4qvt0zbvzlzl | ||
| - | lbjtg5o9kw3x6xg7frm07jfuw | ||
| - | root@manager: | ||
| - | ID HOSTNAME | ||
| - | b85hxlixbr1mh1txd1hrfe4us * | ||
| - | root@manager: | ||
| - | ID HOSTNAME | ||
| - | 4sui75vvdhmet4qvt0zbvzlzl | ||
| - | lbjtg5o9kw3x6xg7frm07jfuw | ||
| - | </ | ||
| - | |||
| - | ou : | ||
| - | |||
| - | < | ||
| - | trainee@traineeXX: | ||
| ... | ... | ||
| root@manager: | root@manager: | ||
| Ligne 191: | Ligne 828: | ||
| </ | </ | ||
| - | ====1.1 - Création d'un Réseau overlay==== | + | ====2.2 - Création d'un Réseau overlay==== |
| A partir du Manager, créez un réseau de type overlay appelé **nginx-net** : | A partir du Manager, créez un réseau de type overlay appelé **nginx-net** : | ||
| Ligne 208: | Ligne 845: | ||
| </ | </ | ||
| - | ====1.2 - Création d'un Service==== | + | ====2.2 - Création d'un Service==== |
| Créez un service nginx qui utilise le réseau **nginx-net** : | Créez un service nginx qui utilise le réseau **nginx-net** : | ||
| Ligne 373: | Ligne 1010: | ||
| </ | </ | ||
| - | ====1.3 - Déplacer le Service vers un autre Réseau overlay==== | + | ====2.3 - Déplacer le Service vers un autre Réseau overlay==== |
| Consultez le réseau overlay **nginx-net** sur les trois nœuds : | Consultez le réseau overlay **nginx-net** sur les trois nœuds : | ||
| Ligne 836: | Ligne 1473: | ||
| </ | </ | ||
| - | Attachez-vous au conteneur **alpine2** sur **Worker1** et essayez de contacter le conteneur **alpine1** : | + | Attachez vous au conteneur **alpine2** sur **Worker1** et essayez de contacter le conteneur **alpine1** : |
| < | < | ||
| Ligne 1187: | Ligne 1824: | ||
| </ | </ | ||
| - | <WRAP center round important 60%> | + | =====LAB #3 - Gestion d'une Architecture de Microservices===== |
| - | **Important** : Prenez une instantanée de chacune de vos machines virtuelles. | + | |
| - | </ | + | |
| - | + | ||
| - | =====LAB #2 - Gestion d'une Architecture de Microservices===== | + | |
| Vous allez mettre en place une application simple, appelé **demo-voting-app** et développé par Docker, sous forme de microservices : | Vous allez mettre en place une application simple, appelé **demo-voting-app** et développé par Docker, sous forme de microservices : | ||
| Ligne 1207: | Ligne 1840: | ||
| {{ : | {{ : | ||
| - | ====2.1 - Rappel - Mise en Place avec Docker avec un réseau Bridge et des liens==== | + | ====3.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay==== |
| - | + | ||
| - | Cette application pourrait être mise en place sous docker avec les commandes suivantes : | + | |
| - | + | ||
| - | < | + | |
| - | docker run -d --name=redis redis | + | |
| - | docker run -d --name=db postgres: | + | |
| - | docker run -d --name=vote -p 5000:80 --link redis:redis dockersamples/ | + | |
| - | docker run -d --name=result -p 5001:80 --link db:db dockersamples/ | + | |
| - | docker run -d --name=worker --link db:db ---link redis:redis dockersamples/ | + | |
| - | </ | + | |
| - | + | ||
| - | Par contre, Docker annonce le retrait éventuel de l' | + | |
| - | + | ||
| - | " | + | |
| - | + | ||
| - | Deuxièmement, | + | |
| - | + | ||
| - | ====2.2 | + | |
| Cette application peut être mise en place sous docker swarm avec avec la commande **docker stack**. Un **stack** est un groupe de services. Premièrement, | Cette application peut être mise en place sous docker swarm avec avec la commande **docker stack**. Un **stack** est un groupe de services. Premièrement, | ||
| Ligne 1367: | Ligne 1982: | ||
| La clef **deploy** permet de spécifier des options lors du déploiement du service : | La clef **deploy** permet de spécifier des options lors du déploiement du service : | ||
| - | * **mode** - Il existe deux types de services. **Replicated** où on spécifie le nombre d' | + | * **mode** - Il existe deux types de services. **Replicated** où on spécifie le nombre d' |
| + | |||
| + | {{ : | ||
| * **replicas** - spécifie le nombre de replicas | * **replicas** - spécifie le nombre de replicas | ||
| * **restart_policy** spécifie ce qui se passe en cas d' | * **restart_policy** spécifie ce qui se passe en cas d' | ||
| Ligne 1416: | Ligne 2034: | ||
| </ | </ | ||
| - | A partir | + | Retournez à la fenêtre d' |
| {{ : | {{ : | ||
| - | Comme vous pouvez constater, conformément au fichier **docker-stack.yml**, | + | Comme vous pouvez constater, conformément au fichier **docker-stack.yml**, |
| - | Consultez maintenant | + | Retournez à votre connexion SSH et consultez |
| < | < | ||
| Ligne 1712: | Ligne 2330: | ||
| ----- | ----- | ||
| - | < | + | |
| - | <div align=" | + | Copyright © 2022 Hugh Norris. |
| - | Copyright © 2021 Hugh NORRIS | + | |
| - | </ | + | |
| - | </ | + | |