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:docker3:drf05 [2021/11/23 08:50] – admin | elearning:workbooks:docker3:drf05 [2024/02/21 13:40] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
~~PDF: | ~~PDF: | ||
- | Version : **2021.01** | + | Version : **2024.01** |
Dernière mise-à-jour : ~~LASTMOD~~ | Dernière mise-à-jour : ~~LASTMOD~~ | ||
- | ======DOF606 - Gestion du Réseau avec Docker====== | + | ======DOF606 - Gestion du Réseau |
=====Contenu du Module===== | =====Contenu du Module===== | ||
- | * **DOF606 - Gestion du Réseau avec Docker** | + | * **DOF606 - Gestion du Réseau |
* Contenu du Module | * Contenu du Module | ||
* L' | * L' | ||
- | * LAB #1 - Les Réseaux Docker ayant un Scope Local | + | * LAB #1 - Gestion du Réseau overlay |
- | * 1.1 - Bridge | + | * 1.1 - Création d'un Réseau overlay |
- | * Liens | + | * 1.2 - Création d'un Service |
- | * 1.2 - Host | + | * 1.3 - Déplacer le Service vers un autre Réseau overlay |
- | * 1.3 - None | + | * 1.4 - DNS container discovery |
- | * 1.4 - Lancer Wordpress dans un container | + | * 1.5 - Création d'un Réseau overlay Personnalisé |
- | * 1.5 - Gestion d'une Architecture de Microservices | + | * LAB #2 - Gestion de l' |
- | * LAB #2 - Gestion du Réseau overlay | + | * 2.1 - 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 41: | Ligne 34: | ||
{{ : | {{ : | ||
- | =====LAB #1 - Les Réseaux Docker ayant un Scope Local===== | + | =====LAB #1 - Gestion du Réseau overlay===== |
- | + | ||
- | Docker fournit trois réseaux par défaut : | + | |
- | + | ||
- | < | + | |
- | 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 bridge** à partir de la machine virtuelle hôte de Debian_9 : | + | |
- | + | ||
- | < | + | |
- | 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 **centos1** dans le réseau **my-bridged-network** : | + | |
- | + | ||
- | < | + | |
- | 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 et permet d' | + | |
- | + | ||
- | < | + | |
- | 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, | + | |
- | 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 où le réseau ne doit pas être isolé de l' | + | |
- | + | ||
- | 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 - Gestion d'une Architecture de Microservices==== | + | |
- | + | ||
- | 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 et saisissez l'URL selon le tableau ci-dessous : | + | |
- | + | ||
- | ^ 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' | 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' | ||
Ligne 740: | Ligne 42: | ||
Le trafic lié à la gestion des services swarm est crypté par défaut avec l’algorithme AES en mode GCM. Afin de crypter le trafic des données liées aux applications il est possible d' | Le trafic lié à la gestion des services swarm est crypté par défaut avec l’algorithme AES en mode GCM. Afin de crypter le trafic des données liées aux applications il est possible d' | ||
- | <WRAP center round important | + | <WRAP center round important |
**ATTENTION** : Le cryptage des données liées aux applications n'est pas compatible avec Windows(tm). Lors de la connexion du nœud Windows(tm) à un réseau overlay crypté, aucune erreur ne sera rapportée. Par contre le nœud sera incapable de communiquer. | **ATTENTION** : Le cryptage des données liées aux applications n'est pas compatible avec Windows(tm). Lors de la connexion du nœud Windows(tm) à un réseau overlay crypté, aucune erreur ne sera rapportée. Par contre le nœud sera incapable de communiquer. | ||
</ | </ | ||
Ligne 747: | Ligne 49: | ||
< | < | ||
- | trainee@traineeXX:~$ ssh -l trainee 10.0.2.62 | + | root@debian11:~# ssh -l trainee 10.0.2.62 |
- | ... | + | The authenticity of host '10.0.2.62 (10.0.2.62)' |
+ | ECDSA key fingerprint is SHA256: | ||
+ | Are you sure you want to continue connecting (yes/ | ||
+ | Warning: Permanently added ' | ||
+ | trainee@10.0.2.62' | ||
+ | Linux manager.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 | ||
+ | |||
+ | The programs included with the Debian GNU/Linux system are free software; | ||
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in / | ||
+ | |||
+ | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
+ | permitted by applicable law. | ||
+ | Last login: Sun Jul 17 08:27:29 2022 from 10.0.2.1 | ||
+ | trainee@manager: | ||
+ | Mot de passe : fenestros | ||
+ | root@manager: | ||
root@manager: | root@manager: | ||
Node left the swarm. | Node left the swarm. | ||
Ligne 763: | Ligne 82: | ||
</ | </ | ||
- | ou | + | Connectez-vous au **worker1** : |
< | < | ||
- | trainee@traineeXX:~$ ssh -l trainee 10.0.2.42 | + | root@manager:~# ssh -l trainee 10.0.2.63 |
- | ... | + | The authenticity of host '10.0.2.63 (10.0.2.63)' |
- | root@manager:~# docker swarm leave | + | ECDSA key fingerprint is SHA256:sEfHBv9azmK60cjqF/ |
- | Node left the swarm. | + | Are you sure you want to continue connecting (yes/no)? yes |
- | root@manager:~# docker swarm init --advertise-addr | + | Warning: Permanently added ' |
- | Swarm initialized: current node (tpn1zsk20sfsfafmk2cvefqjc) is now a manager. | + | trainee@10.0.2.63's password: trainee |
+ | Linux worker1.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 | ||
- | To add a worker to this swarm, run the following command: | + | The programs included with the Debian GNU/Linux system are free software; |
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in / | ||
- | docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao | + | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent |
+ | permitted by applicable law. | ||
+ | Last login: Sun Mar 21 16:34:26 2021 from 10.0.2.11 | ||
+ | trainee@worker1: | ||
+ | Mot de passe : fenestros | ||
+ | root@worker1:~# | ||
- | To add a manager to this swarm, run ' | ||
- | root@manager: | ||
- | trainee@manager: | ||
- | </ | ||
- | |||
- | Connectez-vous au **worker1** : | ||
- | |||
- | < | ||
- | trainee@traineeXX: | ||
- | ... | ||
root@worker1: | root@worker1: | ||
Node left the swarm. | Node left the swarm. | ||
+ | |||
root@worker1: | root@worker1: | ||
This node joined a swarm as a worker. | This node joined a swarm as a worker. | ||
+ | |||
root@worker1: | root@worker1: | ||
- | trainee@worker1: | + | déconnexion |
- | </ | + | |
- | ou | + | trainee@worker1: |
+ | déconnexion | ||
+ | Connection to 10.0.2.63 closed. | ||
- | < | + | root@manager:~# |
- | trainee@traineeXX: | + | |
- | ... | + | |
- | root@worker1:~# docker swarm leave | + | |
- | Node left the swarm. | + | |
- | root@worker1: | + | |
- | This node joined a swarm as a worker. | + | |
- | root@worker1: | + | |
- | trainee@worker1:~# exit | + | |
</ | </ | ||
Ligne 811: | Ligne 123: | ||
< | < | ||
- | trainee@traineeXX:~$ ssh -l trainee 10.0.2.64 | + | root@manager:~# ssh -l trainee 10.0.2.64 |
- | ... | + | The authenticity of host '10.0.2.64 (10.0.2.64)' |
+ | ECDSA key fingerprint is SHA256: | ||
+ | Are you sure you want to continue connecting (yes/no)? yes | ||
+ | Warning: Permanently added ' | ||
+ | trainee@10.0.2.64' | ||
+ | Linux worker2.i2tch.loc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 | ||
+ | |||
+ | The programs included with the Debian GNU/Linux system are free software; | ||
+ | the exact distribution terms for each program are described in the | ||
+ | individual files in / | ||
+ | |||
+ | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
+ | permitted by applicable law. | ||
+ | Last login: Sun Mar 21 16:18:25 2021 from 10.0.2.11 | ||
+ | trainee@worker2: | ||
+ | Mot de passe : fenestros | ||
+ | root@worker2: | ||
root@worker2: | root@worker2: | ||
Node left the swarm. | Node left the swarm. | ||
+ | |||
root@worker2: | root@worker2: | ||
This node joined a swarm as a worker. | This node joined a swarm as a worker. | ||
+ | |||
root@worker2: | root@worker2: | ||
- | trainee@worker2: | + | déconnexion |
- | </ | + | |
- | ou : | + | trainee@worker2:~$ exit |
+ | déconnexion | ||
+ | Connection to 10.0.2.64 closed. | ||
- | < | + | root@manager:~# |
- | trainee@traineeXX: | + | |
- | ... | + | |
- | root@worker2:~# docker swarm leave | + | |
- | Node left the swarm. | + | |
- | root@worker2: | + | |
- | This node joined a swarm as a worker. | + | |
- | root@worker2: | + | |
- | trainee@worker2:~# exit | + | |
</ | </ | ||
Ligne 837: | Ligne 161: | ||
< | < | ||
- | 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: | ||
ID HOSTNAME | ID HOSTNAME | ||
Ligne 884: | Ligne 187: | ||
</ | </ | ||
- | <WRAP center round info 60%> | + | <WRAP center round info 50%> |
**Info** : Le réseau **docker_gwbridge** relie le réseau **ingress** à l' | **Info** : Le réseau **docker_gwbridge** relie le réseau **ingress** à l' | ||
</ | </ | ||
- | <WRAP center round tip 60%> | + | <WRAP center round tip 50%> |
**Best Practice** : Docker recommande l' | **Best Practice** : Docker recommande l' | ||
</ | </ | ||
- | ====2.2 - Création d'un Réseau overlay==== | + | ====1.1 - 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 909: | Ligne 212: | ||
</ | </ | ||
- | ====2.2 - Création d'un Service==== | + | ====1.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 925: | Ligne 228: | ||
</ | </ | ||
- | <WRAP center round info 60%> | + | <WRAP center round info 50%> |
**Info** : Le service publie le port 80 qui est visible de l' | **Info** : Le service publie le port 80 qui est visible de l' | ||
</ | </ | ||
Ligne 1070: | Ligne 373: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez ici les informations concernant les ports et les Endpoints utilisés par le service. | **Important** : Notez ici les informations concernant les ports et les Endpoints utilisés par le service. | ||
</ | </ | ||
- | ====2.3 - Déplacer le Service vers un autre Réseau overlay==== | + | ====1.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 1287: | Ligne 590: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau **nginx-net** a été créé automatiquement sur les deux Workers. Notez aussi le contenu de la section **Peers** qui liste les nœuds ainsi que la section **Containers** qui liste les conteneurs sur chaque nœud qui sont connectés au réseau overlay. | **Important** : Notez que le réseau **nginx-net** a été créé automatiquement sur les deux Workers. Notez aussi le contenu de la section **Peers** qui liste les nœuds ainsi que la section **Containers** qui liste les conteneurs sur chaque nœud qui sont connectés au réseau overlay. | ||
</ | </ | ||
Ligne 1437: | Ligne 740: | ||
root@manager: | root@manager: | ||
my-nginx | my-nginx | ||
+ | |||
root@manager: | root@manager: | ||
nginx-net | nginx-net | ||
Ligne 1442: | Ligne 746: | ||
</ | </ | ||
- | ====2.4 - DNS container discovery==== | + | ====1.4 - DNS container discovery==== |
Le daemon Docker exécute un server DNS embarqué à l' | Le daemon Docker exécute un server DNS embarqué à l' | ||
Ligne 1460: | Ligne 764: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le **NETWORK-ID** ici est **hrs25w4l951kkickhj6262mjg**. | **Important** : Notez que le **NETWORK-ID** ici est **hrs25w4l951kkickhj6262mjg**. | ||
</ | </ | ||
Ligne 1488: | Ligne 792: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau **test-net** n'a pas été créé. | **Important** : Notez que le réseau **test-net** n'a pas été créé. | ||
</ | </ | ||
Ligne 1517: | Ligne 821: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau **test-net**, | **Important** : Notez que le réseau **test-net**, | ||
</ | </ | ||
Ligne 1533: | Ligne 837: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau **test-net** n'a pas été créé. | **Important** : Notez que le réseau **test-net** n'a pas été créé. | ||
</ | </ | ||
Ligne 1543: | Ligne 847: | ||
CONTAINER ID IMAGE | CONTAINER ID IMAGE | ||
ce9097b864dc | ce9097b864dc | ||
+ | |||
root@worker1: | root@worker1: | ||
+ | / # | ||
+ | |||
/ # ping -c 2 alpine1 | / # ping -c 2 alpine1 | ||
PING alpine1 (10.0.2.2): 56 data bytes | PING alpine1 (10.0.2.2): 56 data bytes | ||
Ligne 1559: | Ligne 866: | ||
< | < | ||
root@manager: | root@manager: | ||
+ | / # | ||
+ | |||
/ # ping -c 2 alpine2 | / # ping -c 2 alpine2 | ||
PING alpine2 (10.0.0.4): 56 data bytes | PING alpine2 (10.0.0.4): 56 data bytes | ||
Ligne 1579: | Ligne 888: | ||
Digest: sha256: | Digest: sha256: | ||
Status: Downloaded newer image for alpine: | Status: Downloaded newer image for alpine: | ||
+ | / # | ||
+ | |||
/ # ping -c 2 alpine1 | / # ping -c 2 alpine1 | ||
PING alpine1 (10.0.2.2): 56 data bytes | PING alpine1 (10.0.2.2): 56 data bytes | ||
Ligne 1609: | Ligne 920: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau **test-net** a été supprimé. | **Important** : Notez que le réseau **test-net** a été supprimé. | ||
</ | </ | ||
Ligne 1624: | Ligne 935: | ||
< | < | ||
/ # exit | / # exit | ||
+ | |||
root@manager: | root@manager: | ||
alpine1 | alpine1 | ||
+ | |||
root@manager: | root@manager: | ||
NETWORK ID NAME DRIVER | NETWORK ID NAME DRIVER | ||
Ligne 1634: | Ligne 947: | ||
de563e30d473 | de563e30d473 | ||
518l09lcjhsp | 518l09lcjhsp | ||
+ | |||
root@manager: | root@manager: | ||
test-net | test-net | ||
Ligne 1654: | Ligne 968: | ||
root@manager: | root@manager: | ||
44ozn3vtg23zkksrvloxuulcl | 44ozn3vtg23zkksrvloxuulcl | ||
+ | |||
root@manager: | root@manager: | ||
NETWORK ID NAME DRIVER | NETWORK ID NAME DRIVER | ||
Ligne 1888: | Ligne 1203: | ||
</ | </ | ||
- | =====LAB #3 - Gestion d'une Architecture de Microservices===== | + | =====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 1904: | Ligne 1219: | ||
{{ : | {{ : | ||
- | ====3.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay==== | + | ====2.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay==== |
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 1916: | Ligne 1231: | ||
</ | </ | ||
- | Téléchargez | + | Créez |
< | < | ||
- | root@manager: | + | root@manager: |
- | % Total % Received % Xferd Average Speed | + | |
- | | + | |
- | 100 1707 100 1707 0 | + | |
- | </ | + | |
- | Consultez le fichier téléchargé : | ||
- | |||
- | < | ||
root@manager: | root@manager: | ||
version: " | version: " | ||
Ligne 2046: | Ligne 1354: | ||
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 2066: | Ligne 1377: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** - Notez que chaque réseau et chaque service a comme préfixe le nom de l' | **Important** - Notez que chaque réseau et chaque service a comme préfixe le nom de l' | ||
</ | </ | ||
Ligne 2091: | Ligne 1402: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que la configuration du service **visualizer** a exposé le port **8080**. De cette façon, ce service est disponible sur le port 8080 de chaque nœud dans la swarm. | **Important** : Notez que la configuration du service **visualizer** a exposé le port **8080**. De cette façon, ce service est disponible sur le port 8080 de chaque nœud dans la swarm. | ||
</ | </ | ||
- | Retournez à la fenêtre d' | + | 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**, | ||
Ligne 2116: | Ligne 1429: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que les trois réseaux créés sont de type **overlay**. | **Important** : Notez que les trois réseaux créés sont de type **overlay**. | ||
</ | </ | ||
Ligne 2131: | Ligne 1444: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que seul le réseau **app_frontend** a été créé dans **worker1**. | **Important** : Notez que seul le réseau **app_frontend** a été créé dans **worker1**. | ||
</ | </ | ||
Ligne 2147: | Ligne 1460: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que les deux réseaux **app_frontend** et **app_backend** ont été créés dans **worker2**. | **Important** : Notez que les deux réseaux **app_frontend** et **app_backend** ont été créés dans **worker2**. | ||
</ | </ | ||
Ligne 2223: | Ligne 1536: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau est **10.0.3.0/ | **Important** : Notez que le réseau est **10.0.3.0/ | ||
</ | </ | ||
Ligne 2296: | Ligne 1609: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau est **10.0.2.0/ | **Important** : Notez que le réseau est **10.0.2.0/ | ||
</ | </ | ||
Ligne 2361: | Ligne 1674: | ||
</ | </ | ||
- | <WRAP center round important | + | <WRAP center round important |
**Important** : Notez que le réseau est **10.0.1.0/ | **Important** : Notez que le réseau est **10.0.1.0/ | ||
</ | </ | ||
Ligne 2375: | Ligne 1688: | ||
NAME SERVICES | NAME SERVICES | ||
app | app | ||
+ | |||
root@manager: | root@manager: | ||
Removing service app_db | Removing service app_db | ||
Ligne 2385: | Ligne 1699: | ||
Removing network app_backend | Removing network app_backend | ||
Removing network app_default | Removing network app_default | ||
+ | |||
root@manager: | root@manager: | ||
CONTAINER ID IMAGE | CONTAINER ID IMAGE | ||
Ligne 2391: | Ligne 1706: | ||
----- | ----- | ||
- | < | + | |
- | <div align=" | + | Copyright © 2024 Hugh Norris. |
- | Copyright © 2021 Hugh NORRIS | + | |
- | </ | + | |
- | </ | + |