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 12:04] – 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 60: | Ligne 757: | ||
docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62: | docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62: | ||
- | |||
- | To add a manager to this swarm, run ' | ||
- | root@manager: | ||
- | trainee@manager: | ||
- | </ | ||
- | |||
- | ou | ||
- | |||
- | < | ||
- | 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 ' | To add a manager to this swarm, run ' | ||
Ligne 93: | Ligne 771: | ||
Node left the swarm. | Node left the swarm. | ||
root@worker1: | root@worker1: | ||
- | This node joined a swarm as a worker. | ||
- | root@worker1: | ||
- | trainee@worker1: | ||
- | </ | ||
- | |||
- | ou | ||
- | |||
- | < | ||
- | 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: | root@worker1: | ||
Ligne 119: | 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 141: | 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 195: | 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 212: | 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 377: | 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 840: | 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 1191: | 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 1211: | 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 1371: | 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 1420: | 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 1716: | Ligne 2330: | ||
----- | ----- | ||
- | < | + | |
- | <div align=" | + | Copyright © 2022 Hugh Norris. |
- | Copyright © 2021 Hugh NORRIS | + | |
- | </ | + | |
- | </ | + |