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 [2020/11/18 16:10] – admin | elearning:workbooks:docker2:drf02 [2022/04/29 07:57] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
~~PDF: | ~~PDF: | ||
- | Version : **2020.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 - Préparation | + | * LAB #1 - Les Réseaux Docker ayant un Scope Local |
- | * 1.1 - Importation des Machines Virtuelles | + | * 1.1 - Bridge |
- | * 1.2 - Connexion aux Machines Virtuelles | + | * Liens |
+ | * 1.2 - Host | ||
+ | * 1.3 - None | ||
+ | * 1.4 - Lancer Wordpress dans un container | ||
+ | * 1.5 - Gestion d'une Architecture de Microservices | ||
* LAB #2 - Gestion du Réseau overlay | * LAB #2 - Gestion du Réseau overlay | ||
* 2.1 - Création d'un Réseau overlay | * 2.1 - Création d'un Réseau overlay | ||
Ligne 22: | Ligne 26: | ||
* 2.5 - Création d'un Réseau overlay Personnalisé | * 2.5 - Création d'un Réseau overlay Personnalisé | ||
* LAB #3 - Gestion de l' | * LAB #3 - Gestion de l' | ||
- | * 3.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 |
- | * 3.2 - Mise en Place avec Docker Swarm avec des réseaux Overlay | + | |
=====L' | =====L' | ||
Ligne 38: | Ligne 41: | ||
{{ : | {{ : | ||
- | En plus des réseaux **bridge**, **host** et **none**, déjà vus dans le module **DOF103 | + | =====LAB #1 - Les Réseaux |
- | 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' | + | Docker |
- | + | ||
- | Le trafic lié à la gestion des services swarm est crypté | + | |
- | <WRAP center round important 60%> | + | <code> |
- | **ATTENTION** | + | root@debian9:~# docker network ls |
+ | NETWORK ID NAME DRIVER | ||
+ | 495b3db75b0d | ||
+ | e1ed4de2f947 | ||
+ | 6bda460c97c6 | ||
+ | </ | ||
+ | |||
+ | ====1.1 - Bridge==== | ||
+ | |||
+ | Ce type de réseau est limité | ||
+ | |||
+ | Par défaut Docker fonctionne en mode **Pont** ou (//Bridge//) et crée une interface intermédiaire | ||
+ | |||
+ | < | ||
+ | root@debian9: | ||
+ | 3: docker0: < | ||
+ | link/ether 02: | ||
+ | inet 172.17.0.1/ | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Démarrez | ||
+ | |||
+ | < | ||
+ | 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' | ||
</ | </ | ||
- | =====LAB #1 - Préparation===== | + | Vous pouvez déconnecter un conteneur du réseau en utilisant la commande suivante : |
- | ====1.1 - Importation des Machines Virtuelles==== | + | < |
+ | root@debian9: | ||
+ | root@debian9: | ||
+ | [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | </ | ||
- | Les quatre machines virtuelles ont été importées pour vous. | + | Créez maintenant votre propre réseau ponté appelé **my-bridged-network** : |
- | Créez donc les redirections de port dans le réseau | + | < |
+ | root@debian9: | ||
+ | ceb7ba7493933c55d181bc92b1f799ca07bfe84b168d52a6ac648c1a906093f3 | ||
+ | root@debian9: | ||
+ | NETWORK ID NAME | ||
+ | 495b3db75b0d | ||
+ | e1ed4de2f947 | ||
+ | ceb7ba749393 | ||
+ | 6bda460c97c6 | ||
+ | </ | ||
+ | |||
+ | Bien évidement, ce réseau | ||
< | < | ||
- | desktop@serverXX:~$ VBoxManage natnetwork modify | + | root@debian9:~# docker network inspect my-bridged-network |
- | desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 | + | [ |
- | desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 | + | { |
- | desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 | + | " |
+ | "Id": | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | | ||
+ | }, | ||
+ | " | ||
+ | | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | | ||
+ | } | ||
+ | ] | ||
</ | </ | ||
- | Démarrez ensuite | + | Lancez maintenant deux conteneurs et consultez |
< | < | ||
- | desktop@serverXX:~$ VBoxManage startvm Manager | + | root@debian9:~# docker run -itd --name=centos1 centos |
- | Waiting for VM "Manager" | + | 9f36a628c72b383edfd4dc13ee4e4b2eaf5be0078d780f0334fcb8be0d977d0e |
- | VM "Manager" | + | |
- | desktop@serverXX:~$ VBoxManage startvm Worker1 | + | root@debian9: |
- | Waiting for VM "Worker1" | + | aaed3bc8e404ee1bccd6c87b39de32332940b5391514691fc70188edb17c1d7c |
- | VM "Worker1" | + | |
- | desktop@serverXX:~$ VBoxManage startvm Worker2 | + | root@debian9: |
- | Waiting for VM " | + | {"bridge": |
- | VM " | + | |
- | desktop@serverXX:~$ VBoxManage startvm Debian_9_1 | + | root@debian9:~# docker inspect |
- | Waiting for VM " | + | {"bridge": |
- | VM " | + | |
+ | root@debian9:~# docker inspect | ||
+ | 172.17.0.3 | ||
+ | |||
+ | root@debian9:~# docker inspect | ||
+ | 172.17.0.4 | ||
</ | </ | ||
- | ====1.2 | + | Mettez le conteneur **centos1** dans le réseau **my-bridged-network** : |
- | Les noms d' | + | < |
+ | root@debian9:~# docker network connect my-bridged-network centos1 | ||
- | ^ Utilisateur ^ Mot de Passe ^ | + | root@debian9: |
- | | trainee | trainee | | + | [ |
- | | root | fenestros | | + | { |
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
- | Ouvrez un terminal et tapez la commande suivante pour la machine **Manager** | + | root@debian9:~# docker inspect --format=' |
+ | 172.17.0.3172.25.0.2 | ||
+ | </ | ||
- | <file> | + | <WRAP center round important> |
- | desktop@serverXX:~$ ssh -l trainee localhost -p 2222 | + | **Important** |
- | </file> | + | </WRAP> |
- | Ouvrez un autre terminal et tapez la commande suivante | + | Faites |
- | <file> | + | <code> |
- | desktop@serverXX:~$ ssh -l trainee localhost | + | root@debian9:~# docker network connect my-bridged-network centos2 |
- | </ | + | |
- | Ouvrez un autre terminal et tapez la commande suivante pour la machine **Worker2** | + | root@debian9:~# docker network inspect my-bridged-network |
+ | [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
- | < | + | root@debian9:~# docker inspect |
- | desktop@serverXX:~$ ssh -l trainee localhost | + | 172.17.0.4172.25.0.3 |
- | </file> | + | </code> |
- | Ouvrez un autre terminal et tapez la commande suivante pour la machine | + | Connectez-vous au conteneur |
- | <file> | + | <code> |
- | desktop@serverXX:~$ ssh -l trainee localhost -p 2522 | + | root@debian9:~# docker exec -it centos1 bash |
- | </file> | + | </code> |
- | =====LAB #2 - Gestion du Réseau overlay===== | + | 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. | ||
- | Commencez par re-créer | + | Il est possible d' |
< | < | ||
- | root@manager:~# docker | + | [root@9f36a628c72b /]# exit |
- | Node left the swarm. | + | exit |
+ | root@debian9:~# docker | ||
+ | mongo2 | ||
+ | root@debian9: | ||
+ | mongo2 | ||
+ | root@debian9: | ||
+ | root@735599480b45:/# | ||
+ | search home | ||
+ | nameserver 8.8.8.8 | ||
+ | root@735599480b45:/# | ||
+ | </ | ||
- | root@worker1:~# docker swarm leave | + | ou de passer une entrée pour le fichier **/ |
- | Node left the swarm. | + | |
- | root@worker2:~# docker | + | < |
- | Node left the swarm. | + | root@735599480b45:/# |
+ | exit | ||
+ | root@debian9:~# docker | ||
+ | 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 | ||
+ | </ | ||
- | root@manager: | + | ===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' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | 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 60%> | ||
+ | **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. | ||
+ | </ | ||
+ | |||
+ | Commencez par re-créer un swarm en utilisant les machines virtuelles **manager**, | ||
+ | |||
+ | < | ||
+ | trainee@traineeXX: | ||
+ | ... | ||
+ | root@manager: | ||
+ | Node left the swarm. | ||
+ | root@manager: | ||
Swarm initialized: | Swarm initialized: | ||
To add a worker to this swarm, run the following command: | To add a worker to this swarm, run the following command: | ||
- | docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.15:2377 | + | docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377 |
To add a manager to this swarm, run ' | To add a manager to this swarm, run ' | ||
+ | root@manager: | ||
+ | trainee@manager: | ||
+ | </ | ||
- | root@worker1: | + | Connectez-vous au **worker1** : |
+ | |||
+ | < | ||
+ | trainee@traineeXX: | ||
+ | ... | ||
+ | root@worker1: | ||
+ | Node left the swarm. | ||
+ | root@worker1: | ||
This node joined a swarm as a worker. | This node joined a swarm as a worker. | ||
+ | root@worker1: | ||
+ | trainee@worker1: | ||
+ | </ | ||
- | root@worker2: | + | Connectez-vous au **worker2** : |
+ | |||
+ | < | ||
+ | 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: | ||
+ | trainee@worker2: | ||
</ | </ | ||
Ligne 145: | Ligne 792: | ||
< | < | ||
+ | trainee@traineeXX: | ||
+ | ... | ||
root@manager: | root@manager: | ||
ID HOSTNAME | ID HOSTNAME | ||
Ligne 179: | Ligne 828: | ||
</ | </ | ||
- | ====2.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 422: | Ligne 1071: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 487: | Ligne 1136: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 559: | Ligne 1208: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 704: | Ligne 1353: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 824: | 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 845: | Ligne 1494: | ||
< | < | ||
+ | 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 1152: | Ligne 1802: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1173: | Ligne 1823: | ||
my-nginx | my-nginx | ||
</ | </ | ||
- | |||
- | <WRAP center round important 60%> | ||
- | **Important** : Prenez une instantanée de chacune de vos machines virtuelles. | ||
- | </ | ||
=====LAB #3 - Gestion d'une Architecture de Microservices===== | =====LAB #3 - Gestion d'une Architecture de Microservices===== | ||
Ligne 1194: | Ligne 1840: | ||
{{ : | {{ : | ||
- | ====3.1 | + | ====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, | + | |
- | + | ||
- | ====3.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 1354: | 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 1403: | 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 1520: | Ligne 2151: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1589: | Ligne 2220: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1662: | Ligne 2293: | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1699: | Ligne 2330: | ||
----- | ----- | ||
- | < | + | |
- | <div align=" | + | Copyright © 2022 Hugh Norris. |
- | Copyright © 2020 Hugh NORRIS | + | |
- | </ | + | |
- | </ | + |