tutorial: Reorder chapters for better grouping
This commit is contained in:
parent
c9a08c6125
commit
0093949c4d
12 changed files with 110 additions and 73 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 : {-}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue