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:drf01 [2020/12/06 14:12] adminelearning:workbooks:docker2:drf01 [2021/12/29 10:32] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2020.01**+Version : **2022.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 16: Ligne 16:
     * LAB #2 - Docker Machine     * LAB #2 - Docker Machine
       * 2.1 - Présentation       * 2.1 - Présentation
-      * 2.2 - Préparation +      * 2.2 - Création de Machines Virtuelles Docker 
-        * Docker-CE +      * 2.- Lister les VM Docker 
-          * Mac +      * 2.- Obtenir l'adresse IP des VM 
-          * Linux +      * 2.- Se connecter à une VM Docker
-          * Windows +
-        * VirtualBox +
-      * 2.3 - Installation +
-        * Mac +
-        * Linux +
-        * Windows +
-      * 2.4 - Création de Machines Virtuelles Docker +
-      * 2.- Lister les VM Docker +
-      * 2.- Obtenir l'adresse IP des VM +
-      * 2.- Se connecter à une VM Docker+
     * LAB #3 - Docker Swarm     * LAB #3 - Docker Swarm
       * 3.1 - Présentation       * 3.1 - Présentation
Ligne 41: Ligne 31:
       * 3.9 - Haute Disponibilité       * 3.9 - Haute Disponibilité
       * 3.10 - Supprimer un Service       * 3.10 - Supprimer un Service
 +      * 3.11 - Sauvegarder Docker Swarm
 +      * 3.12 - Restaurer Docker Swarm
  
 =====LAB #1 - Docker Compose===== =====LAB #1 - Docker Compose=====
Ligne 97: Ligne 89:
  
 ====1.2 - Utiliser docker-compose==== ====1.2 - Utiliser docker-compose====
 +
 +===Une Application Simple===
  
 Dans ce LAB vous allez créer une application simple ayant deux environnements différents : Dans ce LAB vous allez créer une application simple ayant deux environnements différents :
Ligne 373: Ligne 367:
 </code> </code>
  
-Avant de poursuivre, utilisez la commande suivante pour arrêter la machine virtuelle **Debian_9** :+===Installer Wordpress avec Docker Compose=== 
 + 
 +Créez maintenant le répertoire **wordpress1** dans /root :
  
 <code> <code>
-desktop@serverXX:~$ VBoxManage controlvm Debian_9 poweroff +root@debian9:~/MyApp/development# cd ~ 
-0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%+root@debian9:~# mkdir wordpress1
 </code> </code>
  
-Ensuite restaurez l'état d'origine la machine virtuelle **Debian_9** :+Placez-vous dans le répertoire et créer le fichier **docker-compose.yaml**
  
 <code> <code>
-desktop@serverXX:~$ VBoxManage snapshot Debian_9 restorecurrent +root@debian9:~# cd wordpress1 
-Restoring snapshot 'snapshot1' (22df4e22-876a-4e94-88a8-8422a3a6b158) +root@debian9:~/wordpress1# vi docker-compose.yaml 
-0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%+root@debian9:~/wordpress1# cat docker-compose.yaml 
 +version: "3.3" 
 +     
 +services: 
 +  db: 
 +    image: mysql:5.
 +    volumes: 
 +      - db_data:/var/lib/mysql 
 +    restart: always 
 +    environment: 
 +      MYSQL_ROOT_PASSWORD: fenestros 
 +      MYSQL_DATABASE: wordpress 
 +      MYSQL_USER: wordpress 
 +      MYSQL_PASSWORD: wordpress 
 +     
 +  wordpress: 
 +    depends_on: 
 +      - db 
 +    image: wordpress:latest 
 +    ports: 
 +      - "8000:80
 +    restart: always 
 +    environment: 
 +      WORDPRESS_DB_HOST: db:3306 
 +      WORDPRESS_DB_USER: wordpress 
 +      WORDPRESS_DB_PASSWORD: wordpress 
 +      WORDPRESS_DB_NAME: wordpress 
 +volumes: 
 +  db_data: {}
 </code> </code>
  
-Supprimez les règles de redirections de ports :+Exécutez la commande docker-compose :
  
 <code> <code>
-desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 delete Docker_Debian_9 +root@debian9:~/wordpress1# docker-compose up -d
-desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 delete Docker_Registry+
 </code> </code>
  
-Arrêtez et supprimez la VM **Registry** :+Vérifiez que le Wordpress fonctionne :
  
 <code> <code>
-desktop@serverXX:~$ VBoxManage controlvm Registry poweroff +root@debian9:~/wordpress1# lynx --dump http://10.0.2.60:8000 
-desktop@serverXX:~$ VBoxManage unregistervm --delete Registry+   WordPress 
 +   Select a default language [English (United States)________] 
 + 
 +   Continue 
 +    
 +root@debian9:~# docker ps -
 +CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS                  NAMES 
 +29afa2a7fdb5        wordpress:latest      "docker-entrypoint.s…"   21 minutes ago      Up 20 minutes               0.0.0.0:8000->80/tcp   wordpress1_wordpress_1 
 +... 
 + 
 +root@debian9:~/wordpress1# docker inspect wordpress1_wordpress_1 | grep IPAddress 
 +            "SecondaryIPAddresses": null, 
 +            "IPAddress": "172.17.0.7", 
 +                    "IPAddress": "172.17.0.7", 
 +                     
 +root@debian9:~/wordpress1# lynx --dump http://172.17.0.7 
 +   WordPress 
 +   Select a default language [English (United States)________] 
 + 
 +   Continue
 </code> </code>
  
Ligne 410: Ligne 452:
 Le jeu de commandes de docker-machine permet de démarrer, surveiller, arrêter et re-démarrer un hôte géré, de mettre à jour le client/daemon docker et de configurer un client docker afin qu'il "parle" à votre machine hôte. Le jeu de commandes de docker-machine permet de démarrer, surveiller, arrêter et re-démarrer un hôte géré, de mettre à jour le client/daemon docker et de configurer un client docker afin qu'il "parle" à votre machine hôte.
  
-====2.2 Préparation==== +Pour installer docker-machine sur votre VM **debian9**, utilisez la commande suivante :
- +
-Exécutez la commande **which docker** pour voir si le binaire docker est installé sur le serveur. Si vous obtenez la sortie suivante, installez Docker-CE :+
  
 <code> <code>
-desktop@serverXX:~$ which docker +root@debian9:~# curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && cp /tmp/docker-machine /usr/local/bin/docker-machine
-desktop@serverXX:~$ +
 </code> </code>
  
-Si vous obtenez la sortie suivante, passez à la section **2.3 - Installation de docker-machine** : +====2.2 - Création de Machines Virtuelles Docker=====
- +
-<code> +
-desktop@serverXX:~$ which docker +
-/usr/bin/docker +
-</code> +
- +
-===Docker-CE=== +
- +
-Installer Docker-CE sur votre **serveur** : +
- +
-==Mac== +
- +
-  * Voir le lien **[[https://docs.docker.com/docker-for-mac/install/]]** ou le lien **[[https://kitematic.com/|kitematic]]**. +
- +
-==Linux et FAD== +
- +
-  * **Ubuntu** - voir le lien **[[https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/]]**, +
-  * Debian - voir le lien **[[https://docs.docker.com/engine/installation/linux/docker-ce/debian/]]**, +
-  * CentOS - voir le lien **[[https://docs.docker.com/engine/installation/linux/docker-ce/centos/]]**, +
-  * Fedora - voir le lien **[[https://docs.docker.com/engine/installation/linux/docker-ce/fedora/]]**, +
- +
-==Windows 7, 8== +
- +
-  * Téléchargez Docker Toolbox à partir de cette page **[[https://docs.docker.com/toolbox/toolbox_install_windows/]]** +
-  * Fermez toutes les machines virtuelles ainsi que VirtualBox, +
-  * Installez **DockerToolBox.exe** (décochez VirtualBox dans la liste de produits à installer), +
-  * Exécutez Docker Toolbox et laissez l'application créer une machine virtuelle, +
-  * Ouvrez VirtualBox. Vous verrez une machine virtuelle Default, +
-  * Ouvrez **cmd** et allez directement au LAB #3. +
- +
-==Windows 10== +
- +
-  * Voir le lien **[[https://docs.docker.com/docker-for-windows/install/]]**. +
- +
-====2.3 - Installation de docker-machine==== +
- +
-Exécutez la commande **which docker-machine** pour voir si le binaire docker-machine est installé sur le serveur. Si vous obtenez la sortie suivante, installez docker-machine : +
- +
-<code> +
-desktop@serverXX:~$ which docker-machine +
-desktop@serverXX:~$  +
-</code> +
- +
-Si vous obtenez la sortie suivante, passez à la section **2.4 - Création de Machines Virtuelles Docker** : +
- +
-<code> +
-desktop@serverXX:~$ which docker +
-/usr/local/bin/docker-machine +
-</code> +
- +
-Pour installer docker-machine sur votre **serveur**, utilisez une des commandes suivantes : +
- +
-===Mac=== +
- +
-<code> +
-curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine +
-</code> +
- +
-===Linux et FAD=== +
- +
-<code> +
-curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && cp /tmp/docker-machine /usr/local/bin/docker-machine +
-</code> +
- +
-===Windows=== +
- +
-Si vous utilisez **[[https://git-for-windows.github.io/|Git BASH]]** : +
- +
-<code> +
-if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && chmod +x "$HOME/bin/docker-machine.exe" +
-</code> +
- +
-Si vous n'utilisez PAS **Git BASH** : +
- +
-Téléchargez la version adéquate pour l'architecture de votre machine à partir de l'adresse **[[https://github.com/docker/machine/releases/]]**. +
- +
-====2.4 - Création de Machines Virtuelles Docker=====+
  
 La création d'une machine se fait simplement en utilisant la commande **docker-machine** avec la sous-commande **create**. Cette sous-commande prend l'option **--driver** ou **-d** qui indique le fournisseur à utiliser : La création d'une machine se fait simplement en utilisant la commande **docker-machine** avec la sous-commande **create**. Cette sous-commande prend l'option **--driver** ou **-d** qui indique le fournisseur à utiliser :
Ligne 515: Ligne 477:
 | [[https://www.vmware.com/fr/products/vsphere.html|VMware vSphere]] | [[https://docs.docker.com/machine/drivers/vsphere/|vmwarevsphere]] | | [[https://www.vmware.com/fr/products/vsphere.html|VMware vSphere]] | [[https://docs.docker.com/machine/drivers/vsphere/|vmwarevsphere]] |
  
-Créez donc la machine virtuelle **manager1** :+Commencez par installer Oracle VirtualBox:
  
 <code> <code>
-desktop@serverXX:~$ sudo su +root@debian9:~/wordpress# cd ~ 
-[sudo] password for desktop:  +root@debian9:~# apt install virtualbox-6.0 
-root@serverXX:~# docker-machine create --driver virtualbox manager1+</code> 
 + 
 +Créez maintenant la machine virtuelle **manager1** : 
 + 
 +<code> 
 +root@debian9:~# docker-machine create --driver virtualbox manager1
 Creating CA: /root/.docker/machine/certs/ca.pem Creating CA: /root/.docker/machine/certs/ca.pem
 Creating client certificate: /root/.docker/machine/certs/cert.pem Creating client certificate: /root/.docker/machine/certs/cert.pem
Ligne 553: Ligne 520:
  
 <code> <code>
-root@serverXX:~# docker-machine --help+root@debian9:~# docker-machine --help
 Usage: docker-machine [OPTIONS] COMMAND [arg...] Usage: docker-machine [OPTIONS] COMMAND [arg...]
  
Ligne 605: Ligne 572:
  
 <code> <code>
-root@serverXX:~# docker-machine create --driver virtualbox worker1+root@debian9:~# docker-machine create --driver virtualbox worker1
 Running pre-create checks... Running pre-create checks...
 Creating machine... Creating machine...
Ligne 628: Ligne 595:
  
 <code> <code>
-root@serverXX:~# docker-machine create --driver virtualbox worker2+root@debian9:~# docker-machine create --driver virtualbox worker2
 ... ...
-root@serverXX:~# docker-machine create --driver virtualbox worker3+root@debian9:~# docker-machine create --driver virtualbox worker3
 ... ...
-root@serverXX:~# docker-machine create --driver virtualbox worker4+root@debian9:~# docker-machine create --driver virtualbox worker4
 ... ...
-root@serverXX:~# docker-machine create --driver virtualbox worker5+root@debian9:~# docker-machine create --driver virtualbox worker5
 ... ...
 </code> </code>
Ligne 641: Ligne 608:
  
 <code> <code>
-root@serverXX:~# docker-machine create --help +root@debian9:~# docker-machine create --help 
 Usage: docker-machine create [OPTIONS] [arg...] Usage: docker-machine create [OPTIONS] [arg...]
  
Ligne 688: Ligne 655:
 </code>  </code> 
  
-====2.- Lister les VM Docker====+====2.- Lister les VM Docker====
  
 Pour lister les VM Docker ainsi que leurs états, il convient d'utilise la sous-commande **ls** de la commande **docker-machine** : Pour lister les VM Docker ainsi que leurs états, il convient d'utilise la sous-commande **ls** de la commande **docker-machine** :
  
 <code> <code>
-root@serverXX:~# docker-machine ls+root@debian9:~# docker-machine ls
 NAME       ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS NAME       ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
 manager1          virtualbox   Running   tcp://192.168.99.100:2376           v17.06.2-ce    manager1          virtualbox   Running   tcp://192.168.99.100:2376           v17.06.2-ce   
Ligne 703: Ligne 670:
 </code> </code>
  
-<WRAP center round important> +====2.- Obtenir l'adresse IP des VM====
-**Important** - Si vous avez Windows 7 ou 8 et vous utilisez Docker Toolbox, les adresses IP des machines seront décalées de 1. Par exemple pour manager1, l'adresse sera 192.168.99.101 et pour worker1 192.168.99.102. Vous devez donc en tenir compte dans la suite du cours. +
-</WRAP> +
- +
-====2.- Obtenir l'adresse IP des VM====+
  
 Une autre façon d'obtenir les adresses IP des VM est d'utiliser la sous-commande **ip** : Une autre façon d'obtenir les adresses IP des VM est d'utiliser la sous-commande **ip** :
  
 <code> <code>
-root@serverXX:~# docker-machine ip manager1+root@debian9:~# docker-machine ip manager1
 192.168.99.100 192.168.99.100
-root@serverXX:~# docker-machine ip worker1+root@debian9:~# docker-machine ip worker1
 192.168.99.101 192.168.99.101
-root@serverXX:~# docker-machine ip worker2+root@debian9:~# docker-machine ip worker2
 192.168.99.102 192.168.99.102
-root@serverXX:~# docker-machine ip worker3+root@debian9:~# docker-machine ip worker3
 192.168.99.103 192.168.99.103
-root@serverXX:~# docker-machine ip worker4+root@debian9:~# docker-machine ip worker4
 192.168.99.104 192.168.99.104
-root@serverXX:~# docker-machine ip worker5+root@debian9:~# docker-machine ip worker5
 192.168.99.105 192.168.99.105
 </code> </code>
  
-====2.- Se connecter à une VM Docker====+====2.- Se connecter à une VM Docker====
  
 Pour se connecter à une VM Docker, il convient d'utiliser la sous-commande **ssh** de la commande **docker-machine** : Pour se connecter à une VM Docker, il convient d'utiliser la sous-commande **ssh** de la commande **docker-machine** :
  
 <code> <code>
-root@serverXX:~# docker-machine ssh manager1+root@debian9:~# docker-machine ssh manager1
                         ##         .                         ##         .
                   ## ## ##        ==                   ## ## ##        ==
Ligne 747: Ligne 710:
 Boot2Docker version 17.06.2-ce, build HEAD : ff16afa - Wed Sep  6 00:17:25 UTC 2017 Boot2Docker version 17.06.2-ce, build HEAD : ff16afa - Wed Sep  6 00:17:25 UTC 2017
 Docker version 17.06.2-ce, build cec0b72 Docker version 17.06.2-ce, build cec0b72
-docker@manager1:~$ +docker@manager1:~$ exit
 </code> </code>
  
Ligne 753: Ligne 716:
 **Important** - Notez que la distribution de la VM est **[[http://boot2docker.io/|Boot2Docker]]**. Cette distribution est basée sur **[[http://tinycorelinux.net/|Tiny Core Linux]]**, s'exécute entièrement dans la mémoire vive, pèse 27 Mo et démarre en approximativement 5 secondes. **Important** - Notez que la distribution de la VM est **[[http://boot2docker.io/|Boot2Docker]]**. Cette distribution est basée sur **[[http://tinycorelinux.net/|Tiny Core Linux]]**, s'exécute entièrement dans la mémoire vive, pèse 27 Mo et démarre en approximativement 5 secondes.
 </WRAP> </WRAP>
 +
 +Installez maintenant le paquet **mlocate** :
 +
 +<code>
 +root@debian9:~# apt install mlocate
 +...
 +</code>
  
 Ayant été créées par root, les VM Docker ainsi que leurs fichiers associés sont stockés dans le répertoire **/root/.docker/machine/machines/** : Ayant été créées par root, les VM Docker ainsi que leurs fichiers associés sont stockés dans le répertoire **/root/.docker/machine/machines/** :
  
 <code> <code>
-root@serverXX:~# locate manager1+root@debian9:~# updatedb 
 +root@debian9:~# locate manager1
 /root/.docker/machine/machines/manager1 /root/.docker/machine/machines/manager1
 /root/.docker/machine/machines/manager1/boot2docker.iso /root/.docker/machine/machines/manager1/boot2docker.iso
Ligne 787: Ligne 758:
  
 <code> <code>
 +root@debian9:~# docker-machine ssh manager1
 docker@manager1:~$ docker swarm init --advertise-addr 192.168.99.100 docker@manager1:~$ docker swarm init --advertise-addr 192.168.99.100
 Swarm initialized: current node (yuwpmvtfmdxn8i7nllkyzkxkp) is now a manager. Swarm initialized: current node (yuwpmvtfmdxn8i7nllkyzkxkp) is now a manager.
Ligne 796: Ligne 768:
 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.
 </code> </code>
 +
 +Notez que les ports suivants doivent être ouverts sur un nœud manager : 22/tcp, 2376/tcp, 2377/tcp, 7946/tcp, 7946/udp et 4789/udp.
  
 ====3.3 - Le Statut Leader==== ====3.3 - Le Statut Leader====
Ligne 846: Ligne 820:
 This node joined a swarm as a worker. This node joined a swarm as a worker.
 </code> </code>
 +
 +Notez que les ports suivants doivent être ouverts sur un nœud worker : 22/tcp, 2376/tcp, 7946/tcp, 7946/udp et 4789/udp.
  
 L'état des VM Docker peut être consulter en utilisant de nouveau la commande **docker node ls** : L'état des VM Docker peut être consulter en utilisant de nouveau la commande **docker node ls** :
Ligne 1503: Ligne 1479:
 Status: Error: no such service: web, Code: 1 Status: Error: no such service: web, Code: 1
 </code> </code>
 +
 +Sortez de manager1 et démarrez le serveur VNC dans la machine virtuelle **debian9** en tant que **trainee** :
 +
 +<code>
 +docker@manager1:/$ exit
 +root@debian9:~# exit
 +trainee@debian9:~$ vncserver
 +
 +New 'X' desktop is debian9.i2tch.loc:1
 +
 +Starting applications specified in /home/trainee/.vnc/xstartup
 +Log file is /home/trainee/.vnc/debian9.i2tch.loc:1.log
 +</code>
 +
 +====3.11 - Sauvegarder Docker Swarm====
 +
 +La configuration de Docker Swarm est contenue dans le répertoire **/var/lib/docker/swarm** de chaque Manager dans le Swarm. Ce processus necéssite qu'il y ait au moins **deux** Managers dans le Swarm. Le procédure de sauvegarde est :
 +
 +  * arrêt du service Docker sur le Manager à sauvegarder,
 +  * sauvegarde du répertoire **/var/lib/docker/swarm**,
 +  * redémarrage du service Docker sur le Manager concerné.
 +
 +====3.12 - Restaurer Docker Swarm====
 +
 +Le procédure de resturation est :
 +
 +  * arrêt du service Docker sur un nouveau Manager,
 +  * suppression du contenu du répertoire **/var/lib/docker/swarm** dans le nouveau Manager,
 +  * restauration du répertoire **/var/lib/docker/swarm** dans le nouveau Manager à partir de la sauvegarde,
 +  * exécution de la commande **docker swarm init --force-new-cluster** sur le nouveau Manager,
 +  * ajout des Managers et Workers à Swarm.
  
 ----- -----
-<html> + 
-<div align="center"> +Copyright © 2022 Hugh Norris.
-Copyright © 2020 Hugh NORRIS +
-</div> +
-</html>+
Menu