TP2 ready
This commit is contained in:
parent
f0a7e085fe
commit
5fa883f6ae
8 changed files with 184 additions and 108 deletions
|
|
@ -4,23 +4,25 @@ Premières étapes
|
|||
================
|
||||
|
||||
Dans un premier temps, nous allons créer une image Docker comme si l'on
|
||||
réalisait une installation sur une machine classique : en suivant une
|
||||
recette. La machine (notre première image Docker) contiendra tout le nécessaire
|
||||
pour faire fonctionner notre service.
|
||||
réalisait une installation sur une machine classique : en suivant une recette,
|
||||
sans trop se préoccuper des fonctionnalitées que propose Docker.
|
||||
|
||||
La machine (notre première image Docker) contiendra tout le nécessaire pour
|
||||
faire fonctionner notre service de monitoring.
|
||||
|
||||
|
||||
## Les caches
|
||||
|
||||
Nous avons vu que chaque instruction de notre `Dockerfile` génère une
|
||||
couche. Chaque couche sert de cache d'une construction de conteneur à
|
||||
couche. Chaque couche sert de cache d'une construction d'image à
|
||||
l'autre. Ainsi, lorsque vous modifiez une instruction dans votre `Dockerfile`,
|
||||
les instructions précédentes ne sont pas réexécutées mais sont ressorties du
|
||||
cache.
|
||||
|
||||
Le cache se base principalement sur le contenu de chaque instruction dans le
|
||||
Le cache se base principalement sur le contenu de chaque instruction du
|
||||
`Dockerfile` (pour les `COPY` et `ADD`, il va aussi regarder la date de
|
||||
dernière modification de fichier copié ou ajouté). Donc tant qu'une instruction
|
||||
n'est pas modifiée dans le `Dockerfile`, le cache sera utilisé.
|
||||
dernière modification de fichier à copier ou à ajouter). Donc tant qu'une
|
||||
instruction n'est pas modifiée dans le `Dockerfile`, le cache sera utilisé.
|
||||
|
||||
Il est possible de ne pas utiliser le cache et de relancer toutes les étapes du
|
||||
`Dockerfile` en ajoutant l'option `--no-cache` au moment du `docker build`.
|
||||
|
|
@ -29,27 +31,25 @@ Les couches du cache peuvent être partagées entre plusieurs conteneur,
|
|||
c'est ainsi que vous pouvez partager facilement une plus grosse partie
|
||||
du système de fichiers.
|
||||
|
||||
\vspace{1.5em}
|
||||
Pour profiter du cache, on va placer de préférences les étapes les plus
|
||||
génériques (qui seraient les plus susceptibles d'apparaître dans d'autres
|
||||
images), en haut du `Dockerfile`.
|
||||
|
||||
Pour profiter du cache, il faut donc placer les étapes les plus génériques (qui
|
||||
seraient susceptibles d'apparaître dans plusieurs conteneur), en haut du
|
||||
`Dockerfile`.
|
||||
|
||||
Commençons donc notre `Dockerfile` : choisissez une image de base pour
|
||||
votre `FROM`, et indiquez votre nom avec l'instruction `MAINTAINER`,
|
||||
pour indiquez que c'est vous qui maintenez ce conteneur (si d'autres
|
||||
gens ont besoin de vous avertir pour le mettre à jour par exemple).
|
||||
Commençons donc notre `Dockerfile` : choisissez une image de base pour remplir
|
||||
votre `FROM`, et indiquez votre nom avec l'instruction `MAINTAINER` (pour
|
||||
indiquez que c'est vous qui maintenez ce conteneur, si des utilisateurs ont besoin
|
||||
de vous avertir pour le mettre à jour par exemple).
|
||||
|
||||
|
||||
## `RUN` ou script ?
|
||||
|
||||
### InfluxDB
|
||||
|
||||
Ensuite vient l'installation d'InfluxDB. Le paquet n'est pas disponible dans
|
||||
les dépôts. La
|
||||
[https://docs.influxdata.com/influxdb/v1.0/introduction/installation/#ubuntu-debian](procédure
|
||||
décrite sur le site) incite à télécharger le paquet mis à disposition puis à
|
||||
l'installer via `dpkg -i`.
|
||||
Ensuite vient la suite d'instructions pour installer d'InfluxDB. Le paquet
|
||||
n'est pas disponible dans les dépôts. La
|
||||
[procédure décrite du site](https://docs.influxdata.com/influxdb/v1.0/introduction/installation/#ubuntu-debian)
|
||||
incite à télécharger le paquet mis à disposition puis à l'installer via `dpkg
|
||||
-i`.
|
||||
|
||||
Deux solutions s'offrent à nous :
|
||||
|
||||
|
|
@ -59,33 +59,34 @@ Deux solutions s'offrent à nous :
|
|||
|
||||
La copie étant définitive (supprimer le fichier ne le supprimera pas des
|
||||
couches où il a pu exister), on préférera la seconde méthode, malgré que `wget`
|
||||
restera en déchet. La première méthode aura plus sa place dans un dépôt où les
|
||||
binaires auront été préalablement compilés, il ne restera plus qu'à les copier
|
||||
dans le conteneur au bon emplacement.
|
||||
restera en déchet. La première méthode aura plus sa place dans un dépôt de
|
||||
projet où les binaires auront été préalablement compilés, il ne restera plus
|
||||
qu'à les copier dans le conteneur au bon emplacement.
|
||||
|
||||
Écrivons une commande `RUN` qui va télécharger la dernière version
|
||||
d'InfluxDB, qui va l'installer et supprimer le fichier.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
À ce stade, nous pouvons déjà terminer le conteneur et tester qu'InfluxDB est
|
||||
bien utilisable : `EXPOSE`, `CMD`, ...
|
||||
À ce stade, nous pouvons déjà terminer le conteneur (`EXPOSE`, `CMD`, ...) et
|
||||
[tester](http://localhost:8083) qu'InfluxDB est bien utilisable.
|
||||
|
||||
Il est possible que vous ayez à écraser le fichier de configuration via un
|
||||
`COPY` (ou de manière plus maligne en utilisant `--volume` au moment du `docker
|
||||
run`, cela fonctionne pas qu'avec les dossiers). Ou peut-être ferez-vous un
|
||||
`ENTRYPOINT` ?
|
||||
run`, cela ne fonctionne pas qu'avec les dossiers !). Ou peut-être ferez-vous
|
||||
un `ENTRYPOINT` ?
|
||||
|
||||
|
||||
### Telegraf
|
||||
### `telegraf`
|
||||
|
||||
Telegraf est un programme qui permet de collecter des métriques systèmes. Il
|
||||
travaille de paire avec InfluxDB pour stocker les valeurs.
|
||||
`telegraf` est un programme qui permet de collecter des métriques systèmes. Il
|
||||
travaille de paire avec InfluxDB, qu'il utilise pour stocker les valeurs
|
||||
relevées.
|
||||
|
||||
Vous pouvez monitorer les métriques de n'importe quelle machine, simplement en
|
||||
installant *Telegraf* et en lui indiquant l'emplacement de son serveur
|
||||
InfluxDB. Nous allons installer *telegraf* sur notre machine à l'aide de la
|
||||
[https://docs.influxdata.com/telegraf/v1.0/introduction/installation/](documentation).
|
||||
installant `telegraf` et en lui indiquant l'emplacement de son serveur
|
||||
InfluxDB. Nous allons installer `telegraf` sur notre machine à l'aide de la
|
||||
[documentation](https://docs.influxdata.com/telegraf/v1.0/introduction/installation/).
|
||||
|
||||
Ces quelques lignes devraient suffir à lancer la collecte, à condition que
|
||||
votre InfluxDB écoute sur le port 8086 local :
|
||||
|
|
@ -97,10 +98,10 @@ tar xf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
|
|||
TELEGRAF_CONFIG_PATH=./telegraf/etc/telegraf/telegraf.conf ./telegraf/usr/bin/telegraf
|
||||
```
|
||||
|
||||
Rendez-vous ensuite dans [http://localhost:8083/](l'interface d'InfluxDB) pour
|
||||
Rendez-vous ensuite dans [l'interface d'InfluxDB](http://localhost:8083/) pour
|
||||
voir si la collecte se passe bien.
|
||||
|
||||
Dans l'interface sélectionnez la base *telegraf* puis explorez les valeurs :
|
||||
Dans l'interface sélectionnez la base `telegraf` puis explorez les valeurs :
|
||||
|
||||
```sql
|
||||
SHOW MEASUREMENTS
|
||||
|
|
@ -113,5 +114,15 @@ Laissons tourner `telegraf` afin de constituer un petit historique de valeurs.
|
|||
|
||||
## Rendu
|
||||
|
||||
Avant de passer à la suite, placez votre `Dockerfile` dans un dossier
|
||||
`influxdb` (pour le moment il ne contient rien d'autre !).
|
||||
### Questions
|
||||
|
||||
1. Dans quel langage est écrit `telegraf` ?
|
||||
|
||||
1. Quelle(s) particularité(s) de ce langage permet de se passer de la variable
|
||||
`LD_LIBRARY_PATH` au lancement de `telegraf`, alors qu'on ne l'a pas
|
||||
installé ?
|
||||
|
||||
### Éléments à rendre
|
||||
|
||||
Avant de passer à la suite, placez votre `Dockerfile` et les éventuels fichiers
|
||||
annexes dans un dossier `influxdb`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue