Quelques éléments pour le TP sur Docker

by Olivier Barais     teaching   istic   m2   french  

Posted 2015.10.20 — Rennes, France

Hello très chers étudiants,

Le but de ce TP est de regarder comment nous pouvons utiliser docker pour faciliter le déploiement d'une application avec la mise en place d'un serveur web en reverse proxy etc...

Etape -1: Docker

Installez docker

Etape 0: Test de votre installation

docker run hello-world

Vous devriez avoir le message suivant.


Hello from Docker. This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com

For more examples and ideas, visit: https://docs.docker.com/userguide/


Etape 1: Téléchargement d'une image existante

Suivez le tutoriel suivant pour tester le téléchargement d'une image

https://docs.docker.com/linux/step_three/

Etape 2: Construction d'une image pour votre application

En suivant le tutoriel suivant:

Vous pourrez partir de cette image de base. https://hub.docker.com/_/maven/

Parcourez rapidement les tutoriels suivants:

Etape 3: Mise en place de la base de données

Lancez votre base de données en aprtant de l'image suivante

https://hub.docker.com/_/mysql/

Utilisez les links docker pour faire le lien entre votre base de données et votre serveur d'application. https://docs.docker.com/userguide/dockerlinks/

Lancez votre application et vérifiez que tout marche.

Etape 4: Mise en place d'un load balancer et d'un reverse proxy avec docker et nginx

Pour le nginx en resolproxy nous allons partir de l'image suivante

L'explication du fonctionnement est disponible ici.

Lancement de nginx en resolvproxy

docker run -d -p 8080:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy

Dans le suite nous allons utiliser terminator pour visualiser les effets du load-balancing.

apt-get install terminator

Lancez Terminator en root.

sudo terminator

modifiez votre fichier /etc/hosts pour faire correspondre myapp.taa.fr vers 127.0.0.1. Ce serait à faire sur votre gestionnaire de nom de domaine en temps normal.

Vous devez avoir une ligne qui ressemble à cela.

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain head-demo myapp.taa.fr

Puis créer n fenètre dans votre navigateur terminator (clic droit puis split horizontal ou vertical). Dans ces terminales, lancez la commande suivante pour tester votre resolve proxy.

docker run -e VIRTUAL_HOST=myapp.taa.fr -t -i  nginx

En tapant la commande suivante, vous pouvez regarder le fichier de configuration nginx qui sera généré à l'adresse suivante /etc/nginx/conf.d/default.conf. (N'oubliez pas de remplacer 865c1e67a00e par l'id de votre nginx en resolve proxy ($docker ps) pour récupérer la liste des containers en cours d'exécution.

docker exec -it 865c1e67a00e bash

Tuez tous les dockers nginx démarrer.

docker ps #pour avoir la liste
docker kill "IDDOCKER" #pour tuer un docker.

Lancez plusieurs fois votre serveur d'application. Testez le résultat.

Etape 5: Utilisation de docker compose

Utilisez docker compose pour déployer votre application avec trois serveur d'applications et une instance de base de données.

tutoriel

Etape 6: Mise en place d'une base de données distribuée (optionnelle, carambar provided)

Pour distriber la base de données, nous pouvons utiliser gallera.

tutoriel.

Suivez le tutoriel pour démarer galera.

Mettez à jour votre fichier docker compose en fonction de cela.