Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:docker2:drf02 [2021/04/14 12:37] adminelearning:workbooks:docker2:drf02 [2022/04/29 07:57] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2021.01**+Version : **2022.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
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'Architecture des Microservices     * LAB #3 - Gestion de l'Architecture des Microservices
-      * 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'Approche Réseau Docker===== =====L'Approche Réseau Docker=====
Ligne 41: Ligne 40:
  
 {{ :elearning:workbooks:docker:docker-3.jpg?direct&600 |image}} {{ :elearning:workbooks:docker:docker-3.jpg?direct&600 |image}}
- 
-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'informations concernant le type **macvlan**, consultez le site de la documentation de Docker **[[https://docs.docker.com/network/network-tutorial-macvlan/|ici]]**. 
- 
-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'option **--attachable** est spécifiée lors de sa création. Ce type d'utilisation du réseau overlay n'est pas recommandé par Docker qui dit que le support de cette fonctionnalité pourrait être retiré. 
-  
-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'utiliser l'option **--opt encrypted** lors de la création du réseau overlay. Dans ce cas, Docker crée des tunnels IPSEC entre chaque nœud qui utilise le même algorithme que le trafic des services swarm. Il y a donc une dégradation des performances à évaluer avant la mise en production. Dans les deux cas les clefs sont modifiées toutes les 12 heures (voir [[https://www.vaultproject.io/docs/internals/rotation.html]]) 
- 
-<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. 
-</WRAP> 
  
 =====LAB #1 - Les Réseaux Docker ayant un Scope Local===== =====LAB #1 - Les Réseaux Docker ayant un Scope Local=====
Ligne 122: Ligne 111:
                 "IPv6Address": ""                 "IPv6Address": ""
             },             },
-            "ad672c3038245c25a36162d05820c21f7250557ac342582d0908d3ca33799e37": { 
-                "Name": "mongo2", 
-                "EndpointID": "adc15132fb73b57ab14e960feeff1b965321ada411be8535b715b103b941d8cc", 
-                "MacAddress": "02:42:ac:11:00:02", 
-                "IPv4Address": "172.17.0.2/16", 
-                "IPv6Address": "" 
-            } 
         },         },
         "Options": {         "Options": {
Ligne 144: Ligne 126:
  
 <WRAP center round important> <WRAP center round important>
-**Important** : Notez ici que les conteneurs **mongo2** et **resotest** ne disposent pas de la même adresse que l'interface **docker0** de la machine hôte. Cependant les adresses se trouvent dans le même segment - **172.17.0.0/16** indiqué par la sortie **"Subnet": "172.17.0.0/16"**.+**Important** : Notez ici que le conteneur **resotest** ne dispose pas de la même adresse que l'interface **docker0** de la machine hôte. Cependant les adresses se trouvent dans le même segment - **172.17.0.0/16** indiqué par la sortie **"Subnet": "172.17.0.0/16"**.
 </WRAP> </WRAP>
  
Ligne 177: Ligne 159:
         },         },
         "ConfigOnly": false,         "ConfigOnly": false,
-        "Containers": +        "Containers": 
-            "ad672c3038245c25a36162d05820c21f7250557ac342582d0908d3ca33799e37":+
-                "Name": "mongo2", +
-                "EndpointID": "adc15132fb73b57ab14e960feeff1b965321ada411be8535b715b103b941d8cc", +
-                "MacAddress": "02:42:ac:11:00:02", +
-                "IPv4Address": "172.17.0.2/16", +
-                "IPv6Address": "" +
-            }+
         },         },
         "Options": {         "Options": {
Ligne 406: Ligne 381:
 [root@9f36a628c72b /]# exit [root@9f36a628c72b /]# exit
 exit exit
-root@debian9:~# docker stop mongo2+root@debian9:~# docker stop resotest
 mongo2 mongo2
-root@debian9:~# docker rm mongo2+root@debian9:~# docker rm resotest
 mongo2 mongo2
-root@debian9:~# docker run -it --name mongo2 --dns 8.8.8.8 i2tch/mongodb2 bash+root@debian9:~# docker run -it --name=resotest --dns 8.8.8.8 centos bash
 root@735599480b45:/# cat /etc/resolv.conf  root@735599480b45:/# cat /etc/resolv.conf 
 search home search home
Ligne 422: Ligne 397:
 root@735599480b45:/# exit root@735599480b45:/# exit
 exit exit
-root@debian9:~# docker stop mongo2+root@debian9:~# docker stop resotest
 mongo2 mongo2
-root@debian9:~# docker rm mongo2+root@debian9:~# docker rm resotest
 mongo2 mongo2
-root@debian9:~# docker run -it --name mongo2 --add-host mickeymouse:127.0.0.1 i2tch/mongodb2 bash+root@debian9:~# docker run -it --name=resotest --add-host mickeymouse:127.0.0.1 centos bash
 root@718e7eab814f:/# cat /etc/hosts root@718e7eab814f:/# cat /etc/hosts
 127.0.0.1 localhost 127.0.0.1 localhost
Ligne 729: Ligne 704:
 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'entre eux et ils ne sont pas accessibles depuis l'extérieur. Pour que les conteneurs sur le réseau puissent communiquer ou être accessibles du monde extérieur, il faut configurer le mappage de port. 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'entre eux et ils ne sont pas accessibles depuis l'extérieur. Pour que les conteneurs sur le réseau puissent communiquer ou être accessibles du monde extérieur, il faut configurer le mappage de port.
  
-=====LAB #2 Gestion du Réseau overlay=====+Ouvrez le navigateur web **Firefox** ou **Chrome** dans **votre** machine et saisissez l'URL selon le tableau ci-dessous :
  
-Commencez par re-créer un swarm :+^ ID ^ URL ( Notez httpet non https: ) ^  
 +| Trainee10 | http://compute01.ittraining.network | 
 +| Trainee11 | http://compute02.ittraining.network | 
 +| Trainee12 | http://compute03.ittraining.network | 
 +| Trainee13 | http://compute04.ittraining.network | 
 +| Trainee14 | http://compute05.ittraining.network | 
 +| Trainee15 | http://compute06.ittraining.network | 
 +| Trainee16 | http://compute07.ittraining.network | 
 +| Trainee17 | http://compute08.ittraining.network |  
 +| Trainee18 | http://compute09.ittraining.network | 
 +| Trainee19 | http://compute10.ittraining.network | 
 +| Trainee20 | http://compute01.ittraining.network | 
 +| Trainee21 | http://compute02.ittraining.network | 
 +| Trainee22 | http://compute03.ittraining.network | 
 +| Trainee23 | http://compute04.ittraining.network | 
 +| Trainee24 | http://compute05.ittraining.network | 
 +| Trainee25 | http://compute06.ittraining.network | 
 +| Trainee26 | http://compute07.ittraining.network | 
 +| Trainee27 | http://compute08.ittraining.network |  
 +| Trainee28 | http://compute09.ittraining.network | 
 +| Trainee29 | http://compute10.ittraining.network |
  
-<code> +Dans la boîte de connexion d'Apache Guacamole, entrez votre ID **traineeXX** et le mot de passe qui vous été fourni par votre formateur
-trainee@traineeXX:~$ ssh -l trainee 10.0.2.62 +
-... +
-root@manager:~# docker swarm leave +
-Node left the swarm. +
-root@manager:~# docker swarm init --advertise-addr 10.0.2.62 +
-Swarm initialized: current node (tpn1zsk20sfsfafmk2cvefqjc) is now manager.+
  
-To add a worker to this swarm, run the following command:+Cliquez sur la connexion **TraineeXX_VNC** et testez ensuite votre application en utilisant le navigateur web de la machine virtuelle.
  
-    docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377+=====LAB #2 Gestion du Réseau overlay=====
  
-To add a manager to this swarmrun 'docker swarm join-token manager' and follow the instructions. +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'informations concernant le type **macvlan**, consultez le site de la documentation de Docker **[[https://docs.docker.com/network/network-tutorial-macvlan/|ici]]**.
-root@manager:~# exit +
-trainee@manager:~# exit +
-</code>+
  
-ou+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'option **--attachable** est spécifiée lors de sa création. Ce type d'utilisation du réseau overlay n'est pas recommandé par Docker qui dit que le support de cette fonctionnalité pourrait être retiré. 
 +  
 +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'utiliser l'option **--opt encrypted** lors de la création du réseau overlay. Dans ce cas, Docker crée des tunnels IPSEC entre chaque nœud qui utilise le même algorithme que le trafic des services swarm. Il y a donc une dégradation des performances à évaluer avant la mise en production. Dans les deux cas les clefs sont modifiées toutes les 12 heures (voir [[https://www.vaultproject.io/docs/internals/rotation.html]]) 
 + 
 +<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. 
 +</WRAP> 
 + 
 +Commencez par re-créer un swarm en utilisant les machines virtuelles **manager**, **worker1** et **worker2** :
  
 <code> <code>
-trainee@traineeXX:~$ ssh -l trainee 10.0.2.42+trainee@traineeXX:~$ ssh -l trainee 10.0.2.62
 ... ...
 root@manager:~# docker swarm leave root@manager:~# docker swarm leave
 Node left the swarm. Node left the swarm.
-root@manager:~# docker swarm init --advertise-addr 10.0.2.42+root@manager:~# docker swarm init --advertise-addr 10.0.2.62
 Swarm initialized: current node (tpn1zsk20sfsfafmk2cvefqjc) is now a manager. Swarm initialized: current node (tpn1zsk20sfsfafmk2cvefqjc) is now a manager.
  
 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.42:2377+    docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377
  
 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Ligne 777: Ligne 771:
 Node left the swarm. Node left the swarm.
 root@worker1:~# docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377 root@worker1:~# docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377
-This node joined a swarm as a worker. 
-root@worker1:~# exit 
-trainee@worker1:~# exit 
-</code> 
- 
-ou 
- 
-<code> 
-trainee@traineeXX:~$ ssh -l trainee 10.0.2.43 
-... 
-root@worker1:~# docker swarm leave 
-Node left the swarm. 
-root@worker1:~# docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.42:2377 
 This node joined a swarm as a worker. This node joined a swarm as a worker.
 root@worker1:~# exit root@worker1:~# exit
Ligne 803: Ligne 784:
 Node left the swarm. Node left the swarm.
 root@worker2:~# docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377 root@worker2:~# docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.62:2377
-This node joined a swarm as a worker. 
-root@worker2:~# exit 
-trainee@worker2:~# exit 
-</code> 
- 
-ou : 
- 
-<code> 
-trainee@traineeXX:~$ ssh -l trainee 10.0.2.44 
-... 
-root@worker2:~# docker swarm leave 
-Node left the swarm. 
-root@worker2:~# docker swarm join --token SWMTKN-1-23d7n1fkkk9rvlhty106q9390bfpf9daljjguq3s807le6c5qs-e0s1yqsajvmi7s8t9l9mw48ao 10.0.2.42:2377 
 This node joined a swarm as a worker. This node joined a swarm as a worker.
 root@worker2:~# exit root@worker2:~# exit
Ligne 825: Ligne 793:
 <code> <code>
 trainee@traineeXX:~$ ssh -l trainee 10.0.2.62 trainee@traineeXX:~$ ssh -l trainee 10.0.2.62
-... 
-root@manager:~# docker node ls 
-ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION 
-b85hxlixbr1mh1txd1hrfe4us *   manager.i2tch.loc   Ready               Active              Leader              19.03.4 
-4sui75vvdhmet4qvt0zbvzlzl     worker1.i2tch.loc   Ready               Active                                  19.03.4 
-lbjtg5o9kw3x6xg7frm07jfuw     worker2.i2tch.loc   Ready               Active                                  19.03.4 
-root@manager:~# docker node ls --filter role=manager 
-ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION 
-b85hxlixbr1mh1txd1hrfe4us *   manager.i2tch.loc   Ready               Active              Leader              19.03.4 
-root@manager:~# docker node ls --filter role=worker 
-ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION 
-4sui75vvdhmet4qvt0zbvzlzl     worker1.i2tch.loc   Ready               Active                                  19.03.4 
-lbjtg5o9kw3x6xg7frm07jfuw     worker2.i2tch.loc   Ready               Active                                  19.03.4 
-</code> 
- 
-ou : 
- 
-<code> 
-trainee@traineeXX:~$ ssh -l trainee 10.0.2.42 
 ... ...
 root@manager:~# docker node ls root@manager:~# docker node ls
Ligne 1890: Ligne 1839:
  
 {{ :elearning:workbooks:debian:6:avance:kubernetes16.png?direct&800 |}} {{ :elearning:workbooks:debian:6:avance:kubernetes16.png?direct&800 |}}
- 
-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://compute01.ittraining.network | 
-| Trainee11 | http://compute02.ittraining.network | 
-| Trainee12 | http://compute03.ittraining.network | 
-| Trainee13 | http://compute04.ittraining.network | 
-| Trainee14 | http://compute05.ittraining.network | 
-| Trainee15 | http://compute06.ittraining.network | 
-| Trainee16 | http://compute07.ittraining.network | 
-| Trainee17 | http://compute08.ittraining.network |  
-| Trainee18 | http://compute09.ittraining.network | 
-| Trainee19 | http://compute10.ittraining.network | 
-| Trainee20 | http://compute01.ittraining.network | 
-| Trainee21 | http://compute02.ittraining.network | 
-| Trainee22 | http://compute03.ittraining.network | 
-| Trainee23 | http://compute04.ittraining.network | 
-| Trainee24 | http://compute05.ittraining.network | 
-| Trainee25 | http://compute06.ittraining.network | 
-| Trainee26 | http://compute07.ittraining.network | 
-| Trainee27 | http://compute08.ittraining.network |  
-| Trainee28 | http://compute09.ittraining.network | 
-| Trainee29 | http://compute10.ittraining.network | 
- 
-Dans la boîte de connexion d'Apache Guacamole, entrez votre ID TraineeXX et le mot de passe qui vous a été fourni par votre formateur. Retournez ensuite à votre connexion SSH. 
  
 ====3.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay==== ====3.1 - Mise en Place avec Docker Swarm avec des réseaux Overlay====
Ligne 2059: 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'instances que Docker doit mettre en place sur les conteneurs **disponibles** et **Global** qui implique que Docker démarrera une instance du service sur chaque conteneur chaque fois qu'un conteneur devient disponible.+  * **mode** - Il existe deux types de services. **Replicated** où on spécifie le nombre d'instances que Docker doit mettre en place sur les hôtes **disponibles** en fonction de la valeur de **replicas** et **Global** qui implique que Docker démarrera une instance du service sur chaque hôte chaque fois qu'un hôte devient disponible. 
 + 
 +{{ :elearning:workbooks:docker2:tvl1m.png?nolink&400 |}} 
   * **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'arrêt du service. Dans le cas ci-dessus, docker va essayer de re-démarrer le service **3** fois (**max_attempts**) à des intervalles de **10** secondes (**delay**) en attendant chaque fois **120** secondes (**window**) pour constater si le service s'est effectivement re-démarré,   * **restart_policy** spécifie ce qui se passe en cas d'arrêt du service. Dans le cas ci-dessus, docker va essayer de re-démarrer le service **3** fois (**max_attempts**) à des intervalles de **10** secondes (**delay**) en attendant chaque fois **120** secondes (**window**) pour constater si le service s'est effectivement re-démarré,
Ligne 2108: Ligne 2034:
 </WRAP> </WRAP>
  
-Retournez à la fenêtre d'Apache Guacamole dans le navigateur de **votre** ordinateur. Cliquez sur la connexion **TraineeXX_VNC**. Lancez ensuite un navigateur Internet dans la machine virtuelle **debian9**. Naviguez à l'URL http://10.0.2.62:8080 ou http://10.0.2.42:8080 selon le cas et consultez le service **visualizer** :+Retournez à la fenêtre d'Apache Guacamole dans le navigateur de **votre** ordinateur. Cliquez sur la connexion **TraineeXX_VNC**. Lancez ensuite un navigateur Internet dans la machine virtuelle **debian9**. Naviguez à l'URL http://10.0.2.62:8080 et consultez le service **visualizer** :
  
 {{ :elearning:workbooks:docker:docker001.png?direct&600 |}} {{ :elearning:workbooks:docker:docker001.png?direct&600 |}}
Ligne 2404: Ligne 2330:
  
 ----- -----
-<html> + 
-<div align="center"> +Copyright © 2022 Hugh Norris.
-Copyright © 2021 Hugh NORRIS +
-</div> +
-</html>+
Menu