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:docker1:drf03 [2020/08/10 14:25] – admin | elearning:workbooks:docker1:drf03 [2021/12/29 10:32] (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~~ | ||
| - | ======DOF104 - Gestion des Volumes, du Réseau et des Ressources====== | + | ======DOF104 - Gestion des Volumes, du Réseau et de la Supervision |
| =====Contenu du Module===== | =====Contenu du Module===== | ||
| Ligne 12: | Ligne 12: | ||
| * Contenu du Module | * Contenu du Module | ||
| * LAB #1 - Gestion des Volumes | * LAB #1 - Gestion des Volumes | ||
| - | * Gestion Automatique par Docker | + | * 1.1 - Gestion Automatique par Docker |
| - | * Gestion Manuelle d'un Volume | + | * 1.2 - Gestion Manuelle d'un Volume |
| * LAB #2 - Gestion du Réseau | * LAB #2 - Gestion du Réseau | ||
| - | * L' | + | * 2.1 - L' |
| * Bridge | * Bridge | ||
| + | * Host | ||
| * None | * None | ||
| * Liens | * Liens | ||
| - | * Lancer Wordpress dans un container | + | * 2.2 - Lancer Wordpress dans un container |
| - | * Gestion d'une Architecture de Microservices | + | * 2.3 - Gestion d'une Architecture de Microservices |
| * LAB #3 - Superviser les Conteneurs | * LAB #3 - Superviser les Conteneurs | ||
| - | * Les Journaux | + | * 3.1 - Les Journaux |
| - | * Les Processus | + | * 3.2 - Les Processus |
| - | * L' | + | * 3.3 - L' |
| - | * LAB #3 - Gestion des Ressources | + | |
| - | * Limiter la Mémoire | + | |
| =====LAB #1 - Gestion des Volumes===== | =====LAB #1 - Gestion des Volumes===== | ||
| Ligne 37: | Ligne 36: | ||
| </ | </ | ||
| - | ====Gestion Automatique de Volumes par Docker==== | + | ====1.1 - Gestion Automatique de Volumes par Docker==== |
| Vérifiez que le processus est bien démarré dans le conteneur : | Vérifiez que le processus est bien démarré dans le conteneur : | ||
| Ligne 184: | Ligne 183: | ||
| </ | </ | ||
| - | ====Gestion Manuelle d'un Volume==== | + | ====1.2 - Gestion Manuelle d'un Volume==== |
| Arrêtez et supprimez le conteneur **mongo2** puis re-créez un conteneur avec un volume spécifique pour contenir les données placées dans **/ | Arrêtez et supprimez le conteneur **mongo2** puis re-créez un conteneur avec un volume spécifique pour contenir les données placées dans **/ | ||
| Ligne 301: | Ligne 300: | ||
| </ | </ | ||
| - | https://docs.docker.com/storage/volumes/ | + | Pour créer un volume à utiliser avec un conteneur utilisez la commande docker volume **create** |
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | myvolume | ||
| + | </code> | ||
| + | |||
| + | Pour lister les volumes, utilisez la commande docker volume **ls** : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | DRIVER | ||
| + | local | ||
| + | </code> | ||
| + | |||
| + | Notez maintenant l' | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | Créez un fichier témoin dans le répertoire **/ | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | </ | ||
| + | |||
| + | Démarrez maintenant un conteneur qui utilise ce volume : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | root@673f9c8bc837:/# | ||
| + | bin boot dev etc home lib lib32 lib64 libx32 | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important> | ||
| + | **Important** : Notez l' | ||
| + | </ | ||
| + | |||
| + | Notez que le fichier témoin **test-file** est disponible dans le conteneur : | ||
| + | |||
| + | < | ||
| + | root@673f9c8bc837:/# | ||
| + | root@673f9c8bc837:/ | ||
| + | test-file | ||
| + | </ | ||
| + | |||
| + | Créez un deuxième fichier témoin dans le répertoire **/ | ||
| + | |||
| + | < | ||
| + | root@673f9c8bc837:/ | ||
| + | root@673f9c8bc837:/ | ||
| + | </ | ||
| + | |||
| + | Contrôlez maintenant le contenu du répertoire **/var/lib/docker/ | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | total 0 | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:22 container_volume | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:16 test-file | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important> | ||
| + | **Important** : Notez que les deux fichiers témoins sont visibles. | ||
| + | </WRAP> | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | ubuntu-volume | ||
| + | root@debian9: | ||
| + | total 0 | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:22 container_volume | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:16 test-file | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important> | ||
| + | **Important** : Notez que les deux fichiers témoins sont toujours visibles. | ||
| + | </ | ||
| + | |||
| + | Créez maintenant un deuxième conteneur en spécifiant un volume qui n' | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | root@b1476960de63:/# | ||
| + | bin boot dev etc home lib lib32 lib64 libx32 | ||
| + | root@b1476960de63:/# | ||
| + | root@b1476960de63:/ | ||
| + | root@b1476960de63:/ | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Notez que Docker a automatiquement créé le volume : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | DRIVER | ||
| + | local | ||
| + | local | ||
| + | root@debian9: | ||
| + | total 0 | ||
| + | -rw-r--r-- 1 root root 0 avril 15 12:06 file_myvolume1 | ||
| + | </ | ||
| + | |||
| + | Un autre type de volume utilisable avec Docker est le **Bindmount**. Un Bindmount : | ||
| + | |||
| + | * dépend de la structure de l' | ||
| + | * ne peut pas être contrôler par la CLI Docker. | ||
| + | |||
| + | Pour créer un Bindmount, commencez par créer le répertoire **bindmount** dans **/root** : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | root@debian9: | ||
| + | </ | ||
| + | |||
| + | Montez le Bindmount à l' | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | root@7b13fe558984:/# | ||
| + | bin bindmount | ||
| + | root@7b13fe558984:/# | ||
| + | root@7b13fe558984:/ | ||
| + | test_bind | ||
| + | root@7b13fe558984:/ | ||
| + | root@7b13fe558984:/ | ||
| + | container_bind | ||
| + | root@7b13fe558984:/ | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Conrôlez la présence du fichier témoin : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | total 0 | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:32 container_bind | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:32 test_bind | ||
| + | root@debian9: | ||
| + | ubuntu-volume | ||
| + | root@debian9: | ||
| + | total 0 | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:32 container_bind | ||
| + | -rw-r--r-- 1 root root 0 avril 15 10:32 test_bind | ||
| + | </ | ||
| + | |||
| + | Notez que la CLI Docker n'a pas de connaissance de ce point de montage : | ||
| + | |||
| + | < | ||
| + | root@debian9: | ||
| + | DRIVER | ||
| + | local | ||
| + | </ | ||
| =====LAB #2 - Gestion du Réseau===== | =====LAB #2 - Gestion du Réseau===== | ||
| + | |||
| + | ====2.1 - L' | ||
| Docker fournit trois réseaux par défaut : | Docker fournit trois réseaux par défaut : | ||
| Ligne 315: | Ligne 481: | ||
| </ | </ | ||
| - | ====Bridge==== | + | ===Bridge=== |
| Ce type de réseau est limité aux conteneurs d'un hôte unique exécutant Docker. Les conteneurs ne peuvent communiquer qu' | Ce type de réseau est limité aux conteneurs d'un hôte unique exécutant Docker. Les conteneurs ne peuvent communiquer qu' | ||
| Ligne 689: | Ligne 855: | ||
| </ | </ | ||
| - | ====Host==== | + | ===Host=== |
| Ce type de réseau est utilisé dans le cas où le réseau ne doit pas être isolé de l' | 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' | + | Dans le cas de la machine virtuelle, l' |
| < | < | ||
| - | root@debian9: | + | root@debian9: |
| - | 2: enp0s3: < | + | 2: ens18: < |
| link/ether 08: | link/ether 08: | ||
| - | inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic | + | inet 10.0.2.60/24 brd 10.0.2.255 scope global dynamic |
| | | ||
| inet6 fe80:: | inet6 fe80:: | ||
| Ligne 708: | Ligne 874: | ||
| < | < | ||
| - | root@debian9: | + | root@debian9: |
| [root@debian9 /]# ip a | [root@debian9 /]# ip a | ||
| 1: lo: < | 1: lo: < | ||
| Ligne 716: | Ligne 882: | ||
| inet6 ::1/128 scope host | inet6 ::1/128 scope host | ||
| | | ||
| - | 2: enp0s3: < | + | 2: ens18: < |
| link/ether 08: | link/ether 08: | ||
| - | inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic | + | inet 10.0.2.60/24 brd 10.0.2.255 scope global dynamic |
| | | ||
| inet6 fe80:: | inet6 fe80:: | ||
| Ligne 733: | Ligne 899: | ||
| </ | </ | ||
| - | ====None==== | + | 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. | ||
| + | </ | ||
| + | |||
| + | ===None=== | ||
| Ce type de réseau est utilisé principalement dans le cas de l' | Ce type de réseau est utilisé principalement dans le cas de l' | ||
| Ligne 750: | Ligne 924: | ||
| </ | </ | ||
| - | ====Liens==== | + | ===Liens=== |
| Le mécanisme des liens entre conteneurs est très puissant et permet d' | Le mécanisme des liens entre conteneurs est très puissant et permet d' | ||
| Ligne 837: | Ligne 1011: | ||
| </ | </ | ||
| - | ====Lancer Wordpress dans un container==== | + | ====2.2 - Lancer Wordpress dans un container==== |
| Créez le répertoire ~/wordpress et placez-vous dedans : | Créez le répertoire ~/wordpress et placez-vous dedans : | ||
| Ligne 878: | Ligne 1052: | ||
| < | < | ||
| - | root@debian9: | + | root@debian9: |
| Unable to find image ' | Unable to find image ' | ||
| latest: Pulling from library/ | latest: Pulling from library/ | ||
| Ligne 911: | Ligne 1085: | ||
| root@debian9: | root@debian9: | ||
| CONTAINER ID IMAGE | CONTAINER ID IMAGE | ||
| - | 9eb2f7fbfbd2 | + | 9eb2f7fbfbd2 |
| 67831dacf002 | 67831dacf002 | ||
| </ | </ | ||
| Ligne 918: | Ligne 1092: | ||
| < | < | ||
| - | root@debian9: | + | root@debian9: |
| | | ||
| | | ||
| Ligne 944: | Ligne 1118: | ||
| </ | </ | ||
| - | ====Gestion d'une Architecture de Microservices==== | + | ====2.3 - Gestion d'une Architecture de Microservices==== |
| Vous allez mettre en place une application simple sous forme de microservices, | Vous allez mettre en place une application simple sous forme de microservices, | ||
| Ligne 964: | Ligne 1138: | ||
| < | < | ||
| docker run -d --name=redis redis | docker run -d --name=redis redis | ||
| - | docker run -d --name=db postgres: | + | docker run -d --name=db |
| docker run -d --name=vote -p 5000:80 --link redis:redis dockersamples/ | 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=result -p 5001:80 --link db:db dockersamples/ | ||
| Ligne 975: | Ligne 1149: | ||
| =====LAB #3 - Superviser les Conteneurs===== | =====LAB #3 - Superviser les Conteneurs===== | ||
| - | ====Les Journaux==== | + | ====3.1 - Les Journaux==== |
| Consultez les logs d'un conteneur : | Consultez les logs d'un conteneur : | ||
| Ligne 997: | Ligne 1171: | ||
| </ | </ | ||
| - | ====Les Processus==== | + | ====3.2 - Les Processus==== |
| Consultez les processus d'un conteneur : | Consultez les processus d'un conteneur : | ||
| Ligne 1007: | Ligne 1181: | ||
| </ | </ | ||
| - | ====L' | + | ====3.3 - L' |
| Pour voir l' | Pour voir l' | ||
| Ligne 1017: | Ligne 1191: | ||
| </ | </ | ||
| - | =====LAB #4 - Gestion des Ressources===== | + | ----- |
| - | La gestion de base des ressources allouées à un conteneur peut être réalisée par l' | + | Copyright © 2022 Hugh Norris. |
| - | + | ||
| - | * --memory | + | |
| - | * --cpu-shares | + | |
| - | + | ||
| - | ====Limiter la Mémoire==== | + | |
| - | + | ||
| - | Par exemple, exécutez un conteneur à partir de l' | + | |
| - | + | ||
| - | < | + | |
| - | root@debian9: | + | |
| - | fc8ce16b3ec86433662719ca1f710a0588951d4f4abb8d90159b5953f419eef7 | + | |
| - | </ | + | |
| - | + | ||
| - | Exécutez ensuite la commande **docker stats** pour visualiser la limite de la mémoire : | + | |
| - | + | ||
| - | < | + | |
| - | CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O | + | |
| - | fc8ce16b3ec8 | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP center round important> | + | |
| - | **Important** : Notez que la limite définie par **--memory** est une taille absolue tandis que la limite définie par **--cpu-shares** est relative. | + | |
| - | </ | + | |
| - | + | ||
| - | ----- | + | |
| - | < | + | |
| - | <div align=" | + | |
| - | Copyright © 2020 Hugh NORRIS | + | |
| - | </ | + | |
| - | </ | + | |