tutorial: Reorder chapters for better grouping

This commit is contained in:
nemunaire 2021-09-21 11:44:12 +02:00
commit 0093949c4d
12 changed files with 110 additions and 73 deletions

View file

@ -1,9 +1,9 @@
\newpage
Composition de conteneurs
=========================
-------------------------
## Automatiser le lancement de conteneurs
### Automatiser le lancement de conteneurs
Au lieu de faire un script pour construire et lancer tous vos conteneurs, nous
allons définir à la racine de notre projet un fichier `docker-compose.yml` qui
@ -30,7 +30,7 @@ services:
Ce fichier est un condensé des options que nous passons habituellement au
`docker container run`.
### `version`
#### `version`
Notons toutefois la présence d'une ligne `version` ; il ne s'agit pas de la
version de vos conteneurs, mais de la version du format de fichier
@ -39,7 +39,7 @@ originale sera utilisée, ne vous permettant pas d'utiliser les dernières
fonctionnalités de Docker.
### `services`
#### `services`
Cette section énumère la liste des services (ou conteneurs) qui seront gérés
par `docker-compose`.
@ -52,7 +52,7 @@ Les autres fils sont les paramètres classiques que l'on va passer à `docker
run`.
### `volumes`
#### `volumes`
Cette section est le pendant de la commandes `docker volume`.
@ -81,7 +81,7 @@ l'emplacement à partager :
</div>
### `network`
#### `network`
Cette section est le pendant de la commandes `docker network`.
@ -101,7 +101,7 @@ networks:
</div>
#### Driver `host`
##### Driver `host`
Le driver `host` réutilise la pile réseau de la machine hôte. Le conteneur
pourra donc directement accéder au réseau, sans NAT et sans redirection de
@ -109,7 +109,7 @@ port. Les ports alloués par le conteneur ne devront pas entrer en conflit avec
les ports ouverts par la machine hôte.
#### Driver `null`
##### Driver `null`
Avec le driver `null`, la pile réseau est recréée et aucune interface (autre
que l'interface de loopback) n'est présente. Le conteneur ne peut donc pas
@ -120,7 +120,7 @@ le driver à utiliser. Par exemple pour un conteneur dont le but est de vérifie
un backup de base de données.
#### Driver `bridge`
##### Driver `bridge`
Le driver `bridge` crée un nouveau bridge qui sera partagé entre tous les
conteneurs qui la référencent.
@ -131,7 +131,7 @@ fonctionnalité de `link` au moment du `run`, il est possible de se retrouvé
lié, même après que l'on ait démarré. La résolution se fera dynamiquement.
### Utiliser le `docker-compose.yml`
#### Utiliser le `docker-compose.yml`
Consultez
[la documentation](https://docs.docker.com/compose/compose-file/) pour

View file

@ -1,15 +1,17 @@
\newpage
Lier des conteneurs
===================
-------------------
Avant de voir des méthodes plus automatiques pour déployer toute notre pile
logicielle TICK, nous allons commencer par mettre en place et lier les
conteneurs manuellement, de la même manière que nous avons pu le faire avec
l'interface d'administration du FIC et MySQL.
l'interface d'administration du FIC et MySQL. Cela nous permettra de voir les
subtilités de chaque image, ce qui nous fera gagner du temps pour ensuite
en faire la description.
## Conteneur central: la base de données
### Conteneur central: la base de données
Le premier conteneur qui doit être lancé est la base de données orientée séries
temporelles:
@ -123,7 +125,7 @@ redémarrer le conteneur. Aidez-vous pour cela de la [documentation du
conteneur](https://hub.docker.com/_/influxdb).
## Collecter les données locales
### Collecter les données locales
Tentons maintenant de remplir notre base de données avec les métriques du
système. Pour cela, on commence par télécharger *Telegraf*:
@ -186,7 +188,7 @@ La nouvelle base a donc bien été créée et tant que nous laissons *Telegraf*
lancé, celui-ci va régulièrement envoyer des métriques de cette machine.
## Afficher les données collectées
### Afficher les données collectées
#### Exercice: {-}

View file

@ -1,18 +1,21 @@
\newpage
Limiter les ressources
======================
Contenir les applications pour éviter les fuites
================================================
Lorsque l'on gère un environnement de production, on souhaite bien
évidemment éviter tout déni de service autant que possible. Ou
parfois, contenir un programme métier avec une fuite mémoire, dans
certaines limites : il vaut parfois mieux le tuer et le relancer
automatiquement, plutôt que d'attendre que potentiellement un autre
processus se fasse tuer à sa place.
évidemment éviter tout déni de service. Ou parfois, contenir un
programme métier avec une fuite mémoire, dans certaines limites : il
vaut parfois mieux le tuer et le relancer automatiquement, plutôt que
d'attendre que potentiellement un autre processus se fasse tuer à sa
place.
Pour cela, Docker expose tout un arsenal, reposant sur les cgroups du
noyau Linux, que l'on verra plus en détail dans un prochain cours.
## Limiter l'utilisaation des ressources
### Mémoire
Comme on peut s'y attendre, il est possible de limiter la mémoire que

View file

@ -1,7 +1,7 @@
\newpage
Mise en place
=============
-------------
Dans la première partie du TP, nous avons installé l'environnement Docker
principal, qui inclut le client, le daemon et toute sa machinerie. Mais le
@ -10,7 +10,7 @@ trouvées dans les usages de la communauté, et parfois même appropriées par
Docker.
## `docker-compose`
### `docker-compose`
Dans cette partie, nous allons avoir besoin de `docker-compose`.
@ -19,12 +19,12 @@ Ce projet ne bénéficie pas d'une intégration au sein du projet Docker et doit
une équipe indépendante. Il constitue aujourd'hui une brique de l'écosystème
Docker, presque indispensable !
### Par le gestionnaire de paquets
#### Par le gestionnaire de paquets
Les distributions à jour vous proposeront un paquet `docker-compose` qui
fonctionnera avec la version de Docker qu'ils fournissent.
### Par la distribution binaire
#### Par la distribution binaire
L'équipe en charge de Docker compose met à disposition un exécutable contenant
tous les scripts. Nous pouvons l'installer en suivant la procédure suivante :
@ -37,14 +37,14 @@ chmod +x /usr/bin/docker-compose
```
</div>
### `pip`
#### `pip`
Le projet étant écrit en Python, il est également disponible via `pip`, si vous
préférez cette méthode. N'oubliez pas de préciser une version compatible avec
votre version de Docker.
### Vérification du fonctionnement
#### Vérification du fonctionnement
Comme avec Docker, nous pouvons vérifier le bon fonctionnement de
`docker-compose` en exécutant la commande :
@ -60,7 +60,7 @@ Si vous obtenez une réponse similaire, c'est que vous êtes prêt à commencer
TP ! Alors n'attendons pas, partons à l'aventure !
## Play With Docker
### Play With Docker
Tout comme pour la partie précédente, si vous avez des difficultés pour
réaliser les exercices sur vos machines, vous pouvez utiliser le projet [Play

View file

@ -1,12 +1,31 @@
\newpage
But du TP
=========
Orchestrer un groupe de conteneurs
==================================
Nous allons réaliser un système de monitoring, prêt à être déployé
chez un fournisseur de cloud.
Maintenant que nous savons démarrer individuellement des conteneurs et les lier
entre-eux, nous allons voir une première manière d'automatiser cela.
Le résultat attendu d'ici la fin du TP, est un groupe de conteneurs
Plutôt que de lancer les commandes `docker` comme nous l'avons fait jusque là :
soit directement dans un terminal, soit via un script, nous allons décrire
l'état que nous souhaitons atteindre : quels images lancer, quels volumes
créer, quels réseaux, etc. Cette description peut s'utiliser pour lancer un
conteneur seul, mais elle prend tout son sens lorsqu'il faut démarrer tout un
groupe de conteneurs qui fonctionnent de concert, parfois avec des dépendances
(un serveur applicatif peut nécessiter d'avoir une base de données prête pour
démarrer).
On parle d'orchestration, car nous allons utiliser Docker comme un chef
d'orchestre : il va ordonner les créations des différents objets (volumes,
réseaux, conteneurs, ...) afin d'arriver au résultat attendu, puis il va faire
en sorte de maintenir ce résultat selon les événements qui pourront survenir.
---
Notre fil rouge dans cette partie sera la réalisation d'un système de
monitoring, tel que nous pourrions le déployer chez un fournisseur de cloud.
Le résultat attendu d'ici la fin de l'exercice, est un groupe de conteneurs
indépendants les uns des autres, réutilisables en fonction de besoins
génériques et pouvant facilement être mis à l'échelle.