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:docker1:drf03 [2021/04/08 10:56] adminelearning:workbooks:docker1:drf03 [2021/12/29 10:32] (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~~
  
-======DOF104 - Gestion des Volumes, du Réseau et des Ressources======+======DOF104 - Gestion des Volumes, du Réseau et de la Supervision des Conteneurs======
  
 =====Contenu du Module===== =====Contenu du Module=====
Ligne 26: Ligne 26:
       * 3.2 - Les Processus       * 3.2 - Les Processus
       * 3.3 - L'Activité en Continu       * 3.3 - L'Activité en Continu
-    * LAB #4 - Gestion des Ressources 
-      * 4.1 - Limiter la Mémoire 
  
 =====LAB #1 - Gestion des Volumes===== =====LAB #1 - Gestion des Volumes=====
Ligne 302: Ligne 300:
 </WRAP> </WRAP>
  
-https://docs.docker.com/storage/volumes/+Pour créer un volume à utiliser avec un conteneur utilisez la commande docker volume **create** : 
 + 
 +<code> 
 +root@debian9:~# docker volume create myvolume 
 +myvolume 
 +</code> 
 + 
 +Pour lister les volumes, utilisez la commande docker volume **ls** : 
 + 
 +<code> 
 +root@debian9:~# docker volume ls 
 +DRIVER              VOLUME NAME 
 +local               myvolume 
 +</code> 
 + 
 +Notez maintenant l'emplacement physique du volume créé : 
 + 
 +<code> 
 +root@debian9:~# docker volume inspect myvolume 
 +
 +    { 
 +        "CreatedAt": "2021-04-15T09:35:21+02:00", 
 +        "Driver": "local", 
 +        "Labels": {}, 
 +        "Mountpoint": "/var/lib/docker/volumes/myvolume/_data", 
 +        "Name": "myvolume", 
 +        "Options": {}, 
 +        "Scope": "local" 
 +    } 
 +
 +</code> 
 + 
 +Créez un fichier témoin dans le répertoire **/var/lib/docker/volumes/myvolume/_data/** : 
 + 
 +<code> 
 +root@debian9:~# touch /var/lib/docker/volumes/myvolume/_data/test-file 
 +</code> 
 + 
 +Démarrez maintenant un conteneur qui utilise ce volume : 
 + 
 +<code> 
 +root@debian9:~# docker run -it --name ubuntu-volume --mount source=myvolume,target=/myvolume ubuntu bash 
 +root@673f9c8bc837:/# ls 
 +bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  myvolume  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 
 +</code> 
 + 
 +<WRAP center round important> 
 +**Important** : Notez l'utilisation de l'option **--mount** au lieu de l'option **--volume** ou **-v**Introduit en Docker version 17.06, Docker recommende l'utilisation de l'option --mount plutôt que l'option -v.. 
 +</WRAP> 
 + 
 +Notez que le fichier témoin **test-file** est disponible dans le conteneur : 
 + 
 +<code> 
 +root@673f9c8bc837:/# cd myvolume/ 
 +root@673f9c8bc837:/myvolume# ls 
 +test-file 
 +</code> 
 + 
 +Créez un deuxième fichier témoin dans le répertoire **/myvolume** du conteneur et quittez celui-ci : 
 + 
 +<code> 
 +root@673f9c8bc837:/myvolume# touch container_volume 
 +root@673f9c8bc837:/myvolume# exit 
 +</code> 
 + 
 +Contrôlez maintenant le contenu du répertoire **/var/lib/docker/volumes/myvolume/_data/** : 
 + 
 +<code> 
 +root@debian9:~# ls -l /var/lib/docker/volumes/myvolume/_data/ 
 +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 
 +</code> 
 + 
 +<WRAP center round important> 
 +**Important** : Notez que les deux fichiers témoins sont visibles. 
 +</WRAP> 
 + 
 +<code> 
 +root@debian9:~# docker rm ubuntu-volume 
 +ubuntu-volume 
 +root@debian9:~# ls -l /var/lib/docker/volumes/myvolume/_data/ 
 +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 
 +</code> 
 + 
 +<WRAP center round important> 
 +**Important** : Notez que les deux fichiers témoins sont toujours visibles. 
 +</WRAP> 
 + 
 +Créez maintenant un deuxième conteneur en spécifiant un volume qui n'existe pas : 
 + 
 +<code> 
 +root@debian9:~# docker run -it --rm --name ubuntu-volume --mount source=myvolume1,target=/myvolume1 ubuntu bash 
 +root@b1476960de63:/# ls  
 +bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  myvolume1  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 
 +root@b1476960de63:/# cd myvolume1 
 +root@b1476960de63:/myvolume1# touch file_myvolume1 
 +root@b1476960de63:/myvolume1# exit 
 +exit 
 +</code> 
 + 
 +Notez que Docker a automatiquement créé le volume : 
 + 
 +<code> 
 +root@debian9:~# docker volume ls 
 +DRIVER              VOLUME NAME 
 +local               myvolume 
 +local               myvolume1 
 +root@debian9:~# ls -l /var/lib/docker/volumes/myvolume1/_data/ 
 +total 0 
 +-rw-r--r-- 1 root root 0 avril 15 12:06 file_myvolume1 
 +</code> 
 + 
 +Un autre type de volume utilisable avec Docker est le **Bindmount**. Un Bindmount : 
 + 
 +  * dépend de la structure de l'arborescence de l'hôte Docker, 
 +  * 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** : 
 + 
 +<code> 
 +root@debian9:~# mkdir bindmount 
 +root@debian9:~# touch bindmount/test_bind 
 +</code> 
 + 
 +Montez le Bindmount à l'intérieur d'un conteneur : 
 + 
 +<code> 
 +root@debian9:~# docker run -it --name ubuntu-volume --mount type=bind,source=/root/bindmount,target=/bindmount ubuntu bash 
 +root@7b13fe558984:/# ls 
 +bin  bindmount  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 
 +root@7b13fe558984:/# cd bindmount 
 +root@7b13fe558984:/bindmount# ls 
 +test_bind 
 +root@7b13fe558984:/bindmount# touch container_bind 
 +root@7b13fe558984:/bindmount# ls 
 +container_bind  test_bind 
 +root@7b13fe558984:/bindmount# exit 
 +exit 
 +</code> 
 + 
 +Conrôlez la présence du fichier témoin : 
 + 
 +<code> 
 +root@debian9:~# ls -l bindmount/ 
 +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:~# docker rm ubuntu-volume 
 +ubuntu-volume 
 +root@debian9:~# ls -l bindmount/ 
 +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 
 +</code> 
 + 
 +Notez que la CLI Docker n'a pas de connaissance de ce point de montage : 
 + 
 +<code> 
 +root@debian9:~# docker volume ls 
 +DRIVER              VOLUME NAME 
 +local               myvolume 
 +</code> 
  
 =====LAB #2 - Gestion du Réseau===== =====LAB #2 - Gestion du Réseau=====
Ligne 1028: Ligne 1191:
 </code> </code>
  
-=====LAB #4 Gestion des Ressources=====+-----
  
-La gestion de base des ressources allouées à un conteneur peut être réalisée par l'utilisation de deux options : +Copyright © 2022 Hugh Norris.
- +
-  * --memory +
-  * --cpu-shares +
- +
-====4.1 - Limiter la Mémoire==== +
- +
-Par exemple, exécutez un conteneur à partir de l'image nginx avec une limite de la mémoire fixée à 256 Mo : +
- +
-<code> +
-root@debian9:~# docker run -d -p 8081:80 --memory="256m" nginx +
-fc8ce16b3ec86433662719ca1f710a0588951d4f4abb8d90159b5953f419eef7 +
-</code> +
- +
-Exécutez ensuite la commande **docker stats** pour visualiser la limite de la mémoire : +
- +
-<code> +
-CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS +
-fc8ce16b3ec8        cool_blackwell      0.00%               1.793MiB / 256MiB   0.70%               2.45kB / 0B         0B / 0B             2 +
-</code> +
- +
-<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. +
-</WRAP> +
- +
------ +
-<html> +
-<div align="center"> +
-Copyright © 2021 Hugh NORRIS +
-</div> +
-</html>+
Menu