Work on TP2

This commit is contained in:
nemunaire 2016-09-15 02:46:46 +02:00
commit b171ee869d
10 changed files with 290 additions and 136 deletions

View file

@ -1,12 +1,12 @@
\newpage
# Premiers pas
Premières étapes
================
Dans un premier temps, nous allons créer une image Docker comme si l'on
réalisait l'installation sur une machine classique : en suivant les méthodes
habituelles, mais tout en écrivant notre recette dans le `Dockerfile`. 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. La machine (notre première image Docker) contiendra tout le nécessaire
pour faire fonctionner notre service.
## Les caches
@ -25,10 +25,9 @@ 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`.
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 (afin de profiter du cache du système de fichiers au moment de
l'exécution du conteneur).
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}
@ -36,10 +35,10 @@ Pour profiter du cache, il faut donc placer les étapes les plus génériques (q
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 qu'il
faut le mettre à jour par exemple).
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).
## `RUN` ou script ?
@ -48,20 +47,24 @@ faut le mettre à jour par exemple).
Ensuite vient l'installation d'InfluxDB. Le paquet n'est pas disponible dans
les dépôts. La
[procédure décrite sur le site](https://influxdb.com/docs/v0.9/introduction/installation.html)
incite à télécharger le paquet mis à disposition puis à l'installer via `dpkg
-i`.
[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`.
Deux solutions s'offrent à nous : télécharger le paquet hors du conteneur, le
copier, puis l'installer. Ou faire un `RUN` avec toutes ces opérations (sans
oublier l'installation de `wget`/`curl`).
Deux solutions s'offrent à nous :
* télécharger le paquet hors du conteneur, le copier, puis l'installer.
* faire un `RUN` avec toutes ces opérations (sans oublier l'installation
préalable de `wget`/`curl`).
La copie étant définitive (supprimer le fichier ne le supprimera pas des
couches où il a pu exister), donc la seconde solution semble préférable (mais
`wget` restera en déchet).
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.
Écrivez une commande `RUN` qui va télécharger la dernière version d'InfluxDB,
qui va l'installer et supprimer le fichier.
É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}
@ -69,17 +72,46 @@ qui va l'installer et supprimer le fichier.
bien utilisable : `EXPOSE`, `CMD`, ...
Il est possible que vous ayez à écraser le fichier de configuration via un
`COPY` (ou de manière plus maline en utilisant `--volume` au moment du `docker
run`, cela fonctionne pas qu'avec les dossiers). Garder la ligne qui vous
permet de lancer votre serveur web dans un coin, en attendant la partie
suivante.
`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` ?
### Grafana
### Telegraf
Une fois InfluxDB configuré, nous allons avoir la même réflexion avec Grafana.
Telegraf est un programme qui permet de collecter des métriques systèmes. Il
travaille de paire avec InfluxDB pour stocker les valeurs.
De la même manière, téléchargez, installez et supprimez le paquet.
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).
Lors de vos tests, sachez que vous pouvez vous connecter sur grafana avec
l'utilisateur *admin*, mot de passe *admin*.
Ces quelques lignes devraient suffir à lancer la collecte, à condition que
votre InfluxDB écoute sur le port 8086 local :
```bash
TELEGRAF_VERSION=1.0.0
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
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
voir si la collecte se passe bien.
Dans l'interface sélectionnez la base *telegraf* puis explorez les valeurs :
```sql
SHOW MEASUREMENTS
SHOW FIELD KEYS
SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' ORDER BY time DESC LIMIT 5
```
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 !).