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/08/11 10:58] – 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 |
- | * Formations en FFP | + | * Liens |
- | * Formations en FAD | + | * 1.2 - Host |
- | * 1.2 - Connexion aux Machines Virtuelles | + | * 1.3 - None |
- | * MAC, Linux et FAD | + | * 1.4 - Lancer Wordpress dans un container |
- | * Windows | + | * 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 26: | 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 42: | 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: | ||
+ | [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | </ | ||
- | ===Formations en FFP=== | + | Créez maintenant votre propre réseau ponté appelé **my-bridged-network** : |
- | Ouvrez VirtualBox et importez les quatre machines virtuelles **Manager**, | + | < |
+ | root@debian9:~# docker network create -d bridge --subnet 172.25.0.0/ | ||
+ | ceb7ba7493933c55d181bc92b1f799ca07bfe84b168d52a6ac648c1a906093f3 | ||
+ | root@debian9: | ||
+ | NETWORK ID NAME | ||
+ | 495b3db75b0d | ||
+ | e1ed4de2f947 | ||
+ | ceb7ba749393 | ||
+ | 6bda460c97c6 | ||
+ | </ | ||
- | Fichier > Importer un appareil virtuel ... | + | Bien évidement, ce réseau est actuellement vide : |
- | Les quatre machines virtuelles sont dans un réseau NAT : | + | < |
+ | root@debian9:~# docker network inspect my-bridged-network | ||
+ | [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | </ | ||
- | ^ Machine ^ Nom d' | + | Lancez maintenant deux conteneurs et consultez les informations concernant le réseau : |
- | | Manager | manager.i2tch.loc | 10.0.2.15 | 2222 | | + | |
- | | Worker1 | worker1.i2tch.loc | 10.0.2.4 | 2322 | | + | |
- | | Worker2 | worker2.i2tch.loc | 10.0.2.5 | 2422 | | + | |
- | | Debian_9_1 | client.i2tch.loc | 10.0.2.9 | 2522 | | + | |
- | Créez les redirections de ports dans le réseau NAT **NatNetwork** de VirtualBox (Fichier | + | <code> |
+ | root@debian9:~# docker run -itd --name=centos1 centos | ||
+ | 9f36a628c72b383edfd4dc13ee4e4b2eaf5be0078d780f0334fcb8be0d977d0e | ||
- | ^ Nom ^ Protocole ^ IP hôte ^ Port hôte ^ IP invité ^ Port invité ^ | + | root@debian9: |
- | | Manager | TCP | 127.0.0.1 | 2222 | 10.0.2.15 | 22 | | + | aaed3bc8e404ee1bccd6c87b39de32332940b5391514691fc70188edb17c1d7c |
- | | Worker1 | TCP | 127.0.0.1 | 2322 | 10.0.2.4 | 22 | | + | |
- | | Worker2 | TCP | 127.0.0.1 | 2422 | 10.0.2.5 | 22 | | + | |
- | | Debian_9_1 | TCP | 127.0.0.1 | 2522 | 10.0.2.9 | 22 | | + | |
- | Démarrez ensuite les quatre machines virtuelles. | + | root@debian9: |
+ | {" | ||
- | ===Formations en FAD=== | + | root@debian9: |
+ | {" | ||
- | Les quatre machines virtuelles ont été importées pour vous. Démarrez | + | root@debian9: |
+ | 172.17.0.3 | ||
+ | |||
+ | root@debian9: | ||
+ | 172.17.0.4 | ||
+ | </ | ||
- | Créez donc les redirections de port dans le réseau | + | Mettez le conteneur **centos1** |
< | < | ||
- | desktop@server16:~$ VBoxManage natnetwork modify | + | root@debian9:~# docker network connect my-bridged-network centos1 |
- | desktop@server16:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 | + | |
- | desktop@server16:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 | + | root@debian9: |
- | desktop@server16:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 | + | [ |
+ | { | ||
+ | " | ||
+ | "Id": | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | | ||
+ | }, | ||
+ | " | ||
+ | | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | |||
+ | root@debian9:~# docker inspect --format=' | ||
+ | 172.17.0.3172.25.0.2 | ||
</ | </ | ||
- | Démarrez ensuite les quatre machines virtuelles | + | <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** | ||
< | < | ||
- | desktop@server16:~$ VBoxManage startvm Manager | + | root@debian9:~# docker network connect my-bridged-network centos2 |
- | Waiting for VM "Manager" | + | |
- | VM "Manager" | + | root@debian9: |
- | desktop@server16:~$ VBoxManage startvm Worker1 | + | [ |
- | Waiting for VM "Worker1" | + | { |
- | VM "Worker1" | + | |
- | desktop@server16:~$ VBoxManage startvm Worker2 --type headless | + | "Id": " |
- | Waiting for VM "Worker2" | + | " |
- | VM "Worker2" | + | "Scope": |
- | desktop@server16:~$ VBoxManage startvm Debian_9_1 --type headless | + | " |
- | Waiting for VM "Debian_9_1" | + | " |
- | VM "Debian_9_1" | + | " |
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | "Gateway": "172.25.0.1" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | "Attachable": | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | "Name": " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | "IPv6Address": "" | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | |||
+ | root@debian9: | ||
+ | 172.17.0.4172.25.0.3 | ||
</ | </ | ||
- | ====1.2 | + | Connectez-vous au conteneur **centos1** en lançant bash : |
- | Les noms d' | + | < |
+ | root@debian9:~# docker exec -it centos1 bash | ||
+ | </ | ||
- | ^ Utilisateur ^ Mot de Passe ^ | + | Vérifiez que la connectivité fonctionne : |
- | | trainee | trainee | | + | |
- | | root | fenestros | | + | |
- | Vous devez vous connecter aux machines virtuelles de la façon suivante | + | < |
+ | [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/ | ||
+ | </ | ||
- | ===MAC, Linux et FAD=== | + | Les options possibles au niveau de la gestion du réseau sont vaste. Voici deux exemples supplémentaires. |
- | Ouvrez | + | Il est possible d' |
- | <file> | + | <code> |
- | $ ssh -l trainee localhost | + | [root@9f36a628c72b /]# exit |
- | </file> | + | exit |
+ | root@debian9: | ||
+ | mongo2 | ||
+ | root@debian9: | ||
+ | mongo2 | ||
+ | root@debian9: | ||
+ | root@735599480b45:/# | ||
+ | search home | ||
+ | nameserver 8.8.8.8 | ||
+ | root@735599480b45:/# | ||
+ | </code> | ||
- | Ouvrez un autre terminal et tapez la commande suivante | + | ou de passer une entrée |
- | <file> | + | <code> |
- | $ ssh -l trainee | + | root@735599480b45:/# |
- | </file> | + | 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 | ||
+ | </code> | ||
- | Ouvrez un autre terminal et tapez la commande suivante pour la machine **Worker2** : | + | ===Liens=== |
- | < | + | Le mécanisme des liens entre conteneurs est très puissant et permet d' |
- | $ ssh -l trainee localhost -p 2422 | + | |
- | </ | + | |
- | Ouvrez un autre terminal et tapez la commande suivante pour la machine **Debian_9** | + | < |
+ | root@332aa9930f30:/# exit | ||
+ | exit | ||
- | < | + | root@debian9: |
- | $ ssh -l trainee localhost | + | 6a315259b2946c3bf2bb69f608cbe910d87edaadedb4f805e7a4dbf6af1eb916 |
- | </ | + | |
- | ===Windows=== | + | root@debian9: |
+ | CONTAINER ID IMAGE | ||
+ | 6a315259b294 | ||
+ | 332aa9930f30 | ||
+ | aaed3bc8e404 | ||
+ | 9f36a628c72b | ||
+ | 2169360fcbfd | ||
+ | ea239635e141 | ||
+ | 21b0490a93dd | ||
+ | bdb4bc0f81de | ||
+ | f5b45072b831 | ||
+ | 9731a48f126a | ||
+ | eacd70596e23 | ||
+ | cffb4456e9c4 | ||
- | Ouvrez **putty** et utilisez les informations suivantes pour vous connecter à **Manager** | + | root@debian9:~# docker exec -it centos3 bash |
- | * Host Name --> localhost | + | [root@6a315259b294 /]# ping centos2 |
- | * Port --> 2222 | + | PING alias (172.17.0.4) 56(84) bytes of data. |
- | + | 64 bytes from alias (172.17.0.4): | |
- | Ouvrez **putty** et utilisez les informations suivantes pour vous connecter à **Worker1** : | + | 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/ | ||
- | * Host Name --> localhost | + | [root@6a315259b294 /]# cat / |
- | * Port --> 2322 | + | 127.0.0.1 localhost |
+ | :: | ||
+ | fe00::0 ip6-localnet | ||
+ | ff00::0 ip6-mcastprefix | ||
+ | ff02:: | ||
+ | ff02:: | ||
+ | 172.17.0.4 alias aaed3bc8e404 centos2 | ||
+ | 172.17.0.2 6a315259b294 | ||
- | Ouvrez **putty** et utilisez les informations suivantes pour vous connecter à **Worker2** : | + | [root@6a315259b294 /]# exit |
+ | exit | ||
- | * Host Name --> localhost | + | root@debian9: |
- | * Port --> 2422 | + | 172.17.0.2 |
+ | </code> | ||
- | Ouvrez **putty** et utilisez les informations suivantes pour vous connecter à **Debian_9** | + | Notez cependant qu le lien est unidirectionnel |
- | * Host Name --> localhost | + | <code> |
- | * Port --> 2522 | + | root@debian9: |
- | =====LAB | + | [root@aaed3bc8e404 /]# ping centos3 |
+ | ping: centos3: Name or service not known | ||
- | Commencez par re-créer un swarm : | + | [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@manager:~# docker | + | [root@aaed3bc8e404 /]# exit |
- | Node left the swarm. | + | exit |
+ | root@debian9:~# docker | ||
+ | 172.17.0.4172.25.0.3 | ||
+ | </ | ||
- | root@worker1: | + | ====1.2 - Host==== |
- | Node left the swarm. | + | |
- | root@worker2: | + | Ce type de réseau est utilisé dans le cas où le réseau ne doit pas être isolé de l' |
- | Node left the swarm. | + | |
- | root@manager: | + | 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 201: | Ligne 792: | ||
< | < | ||
+ | trainee@traineeXX: | ||
+ | ... | ||
root@manager: | root@manager: | ||
ID HOSTNAME | ID HOSTNAME | ||
Ligne 235: | 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 478: | Ligne 1071: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 543: | Ligne 1136: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 615: | Ligne 1208: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 760: | Ligne 1353: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 880: | 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 901: | 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 929: | Ligne 1523: | ||
2 packets transmitted, | 2 packets transmitted, | ||
round-trip min/avg/max = 0.642/ | round-trip min/avg/max = 0.642/ | ||
- | / # | + | / # exit |
</ | </ | ||
Ligne 935: | Ligne 1529: | ||
< | < | ||
- | / # exit | ||
root@worker1: | root@worker1: | ||
alpine2 | alpine2 | ||
Ligne 1209: | Ligne 1802: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1230: | 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 1251: | 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 1411: | 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 1460: | 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 1577: | Ligne 2151: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1646: | Ligne 2220: | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
}, | }, | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1719: | Ligne 2293: | ||
{ | { | ||
" | " | ||
- | " | + | " |
} | } | ||
] | ] | ||
Ligne 1732: | Ligne 2306: | ||
Schématiquement, | Schématiquement, | ||
- | {{ : | + | {{ : |
Dernièrement, | Dernièrement, | ||
Ligne 1756: | Ligne 2330: | ||
----- | ----- | ||
- | < | + | |
- | <div align=" | + | Copyright © 2022 Hugh Norris. |
- | Copyright © 2020 Hugh NORRIS | + | |
- | </ | + | |
- | </ | + |