Save tuto corrections

This commit is contained in:
nemunaire 2022-02-24 20:43:43 +01:00
commit 10448a6c8d
115 changed files with 1423 additions and 1289 deletions

View file

@ -57,7 +57,7 @@ run`.
Cette section est le pendant de la commandes `docker volume`.
On déclare les volumes simplement en leur donnant un nom et un driver comme
suit :
suit:
<div lang="en-US">
```yaml
@ -68,7 +68,7 @@ volumes:
</div>
Pour les utiliser avec un conteneur, on référence le nom ainsi que
l'emplacement à partager :
l'emplacement à partager:
<div lang="en-US">
```yaml
@ -87,10 +87,10 @@ Cette section est le pendant de la commandes `docker network`.
Par défaut, Docker relie tous les conteneurs sur un bridge et fait du NAT pour
que les conteneurs puissent accéder à l'Internet. Mais ce n'est pas le seul
mode possible !
mode possible!
De la même manière que pour les `volumes`, cette section déclare les réseaux
qui pourront être utilisés par les `services`. On pourrait donc avoir :
qui pourront être utilisés par les `services`. On pourrait donc avoir:
<div lang="en-US">
```yaml
@ -133,12 +133,14 @@ lié, même après que l'on ait démarré. La résolution se fera dynamiquement.
#### Utiliser le `docker-compose.yml`
Consultez
[la documentation](https://docs.docker.com/compose/compose-file/) pour
une liste exhaustive des options que nous pouvons utiliser.
Consultez la documentation[^COMPOSEDOC] pour une liste exhaustive des options
que nous pouvons utiliser.
[^COMPOSEDOC]: La documentation des `docker-compose.yml`:
<https://docs.docker.com/compose/compose-file/>
Une fois que notre `docker-compose.yml` est prêt, nous pouvons lancer
la commande suivante et admirer le résultat :
la commande suivante et admirer le résultat:
<div lang="en-US">
```bash

View file

@ -6,9 +6,8 @@ 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. Cela nous permettra de voir les
subtilités de chaque image, ce qui nous fera gagner du temps pour ensuite
en faire la description.
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
@ -58,7 +57,8 @@ le client officiel (le binaire s'appelle `influx`):
<div lang="en-US">
```
42sh$ docker container run --rm -it --link mytsdb:influxdb influxdb:1.8 influx -host influxdb
42sh$ docker container run --rm -it --link mytsdb:influxdb influxdb:1.8 \
influx -host influxdb
Connected to http://influxdb:8086 version 1.8.9
InfluxDB shell version: 1.8.9
> show databases
@ -69,10 +69,10 @@ _internal
```
</div>
Si vous aussi vous voyez la table `_internal`, bravo ! vous pouvez passer à la
Si vous aussi vous voyez la table `_internal`, bravo! vous pouvez passer à la
suite.
#### Mais quelle était cette commande magique ? {-}
#### Mais quelle était cette commande magique? {-}
Oui, prenons quelques minutes pour l'analyser...
@ -132,7 +132,9 @@ système. Pour cela, on commence par télécharger *Telegraf*:
<div lang="en-US">
```bash
curl https://dl.influxdata.com/telegraf/releases/telegraf-1.19.2_linux_amd64.tar.gz | \
V=1.19.2
P=telegraf-${V}_linux_$(uname -m)
curl https://dl.influxdata.com/telegraf/releases/${P}.tar.gz | \
tar xzv -C /tmp
```
</div>
@ -157,7 +159,8 @@ Et observons ensuite:
<div lang="en-US">
```bash
42sh$ docker container run --rm -it --link mytsdb:zelda influxdb:1.8 influx -host zelda
42sh$ docker container run --rm -it --link mytsdb:zelda influxdb:1.8 \
influx -host zelda
InfluxDB shell version: 1.8.9
> show databases
name: databases
@ -205,6 +208,6 @@ si besoin.
la page d'accueil est vide au démarrage, pour savoir si vous avez réussi,
rendez-vous sous l'onglet *Hosts*, le nom de votre machine devrait y
apparaître. En cliquant dessus, vous obtiendrez des graphiques similaires à
ceux ci-dessous:
ceux ci-après:
![Résultat obtenu](chronograf_latest.png)

View file

@ -7,7 +7,7 @@ Projet
------
Réalisez le `docker-compose.yml` permettant de lancer toute notre stack de
monitoring, d'un simple :
monitoring, d'un simple:
<div lang="en-US">
```
@ -49,10 +49,10 @@ Tarball
-------
Tous les fichiers identifiés comme étant à rendre pour ce TP sont à
placer dans une tarball (pas d'archive ZIP, RAR, ...).
placer dans une tarball (pas d'archive ZIP, RAR, ...).
Voici une arborescence type (vous pourriez avoir des fichiers supplémentaires,
cela dépendra de votre avancée dans le projet) :
cela dépendra de votre avancée dans le projet):
<div lang="en-US">
```
@ -66,7 +66,7 @@ login_x-TP1/...
## Signature du rendu
Deux méthodes sont utilisables pour signer votre rendu :
Deux méthodes sont utilisables pour signer votre rendu:
* signature du courriel ;
* signature de la tarball.
@ -93,7 +93,7 @@ signature.
#### No public key
Si vous recevez un rapport avec l'erreur suivante :
Si vous recevez un rapport avec l'erreur suivante:
<div lang="en-US">
```
@ -116,7 +116,7 @@ rendu.
#### Not explicit username
Si vous recevez un rapport avec l'erreur suivante :
Si vous recevez un rapport avec l'erreur suivante:
<div lang="en-US">
```
@ -131,7 +131,7 @@ données.
#### I've decided to skip your e-mail
Si vous recevez un rapport concluant ainsi :
Si vous recevez un rapport concluant ainsi:
<div lang="en-US">
```

View file

@ -5,7 +5,7 @@ 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. Ou parfois, contenir un
programme métier avec une fuite mémoire, dans certaines limites : il
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.
@ -44,7 +44,7 @@ l'ordonnanceur privilégiant alors les autres processus du système.
Par défaut, le taux maximal (1024 = 100%) d'utilisation CPU est donné
aux nouveaux conteneurs, on peut le réduire en utilisant l'option
`-c`/`--cpu-shares` : 512 = 50%, par exemple.
`-c`/`--cpu-shares`: 512 = 50%, par exemple.
## Sécuriser l'exécution
@ -76,14 +76,14 @@ du noyau, seccomp est un filtre que l'on peut définir pour chaque
appel système. Liste blanche, liste noire, tout est possible.
Docker filtre notamment tous les appels systèmes qui pourraient
déborder à l'extérieur du conteneur : il n'est par exemple pas
déborder à l'extérieur du conteneur: il n'est par exemple pas
possible de changer l'heure dans un conteneur, car il n'y a
aujourd'hui aucun mécanisme pour isoler les visions des dates d'un
conteneur à l'autre.
Voici par exemple un fichier de profil seccomp, interdisant
l'utilisation de l'appel système `nanosleep(2)` (utilisé notamment par
`sleep(1)`) :
`sleep(1)`):
<div lang="en-US">
```js
@ -105,11 +105,11 @@ l'utilisation de l'appel système `nanosleep(2)` (utilisé notamment par
```
</div>
On peut ensuite l'appliquer à un conteneur Docker :
On peut ensuite l'appliquer à un conteneur Docker:
<div lang="en-US">
```
42sh$ docker container run -it --security-opt seccomp=nanosleep.json ubuntu /bin/bash
42sh$ docker run -it --security-opt seccomp=nanosleep.json ubuntu /bin/bash
(cntnr)$ sleep 42
sleep: cannot read realtime clock: Operation not permitted
```

View file

@ -3,11 +3,10 @@
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
projet Docker propose de nombreuses autres ressources, souvent directement
trouvées dans les usages de la communauté, et parfois même appropriées par
Docker.
Jusqu'ici, nous avons utilisé l'environnement Docker principal, qui inclut le
client, le daemon et toute sa machinerie. Mais le projet Docker propose de
nombreuses extensions, souvent directement trouvées dans les usages de la
communauté, et parfois même appropriées par Docker.
### `docker-compose`
@ -16,8 +15,8 @@ Dans cette partie, nous allons avoir besoin de `docker-compose`.
Ce projet ne bénéficie pas d'une intégration au sein du projet Docker et doit
être téléchargé séparément, car originellement, le projet était développé par
une équipe indépendante. Il constitue aujourd'hui une brique de l'écosystème
Docker, presque indispensable !
une équipe indépendante (et en Python). Il constitue aujourd'hui une brique de
l'écosystème Docker, presque indispensable !
#### Par le gestionnaire de paquets
@ -26,28 +25,17 @@ fonctionnera avec la version de Docker qu'ils fournissent.
#### 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 :
L'équipe en charge du projet met à disposition un exécutable que nous pouvons
téléchargeant depuis <https://github.com/docker/compose/releases>.
<div lang="en-US">
```bash
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64 \
> /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
```
</div>
#### `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.
Ajoutez l'exécutable dans le dossier des plugins : `$HOME/.docker/cli-plugins`
(sans oublier de `chmod +x` !).
#### Vérification du fonctionnement
Comme avec Docker, nous pouvons vérifier le bon fonctionnement de
`docker-compose` en exécutant la commande :
`docker-compose` en exécutant la commande :
<div lang="en-US">
```
@ -56,13 +44,13 @@ docker-compose version: 1.29.2
```
</div>
Si vous obtenez une réponse similaire, c'est que vous êtes prêt à commencer le
TP ! Alors n'attendons pas, partons à l'aventure !
Si vous obtenez une réponse similaire, c'est que vous êtes prêt à continuer !
Alors n'attendons pas, partons à l'aventure !
### 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
réaliser les exercices sur votre machine, vous pouvez utiliser le projet [Play
With Docker](https://play-with-docker.com/) qui vous donnera accès à un bac à
sable avec lequel vous pourrez réaliser tous les exercices de ce TP.
sable avec lequel vous pourrez réaliser tous les exercices.

View file

@ -6,7 +6,7 @@ institute: EPITA
date: Mercredi 2 octobre 2019
abstract: |
Dans cette deuxième partie du TP, nous allons apprendre à déployer
un groupe de conteneurs !
un groupe de conteneurs !
\vspace{1em}

View file

@ -6,9 +6,9 @@ Orchestrer un groupe de conteneurs
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.
Plutôt que de lancer les commandes `docker` comme nous l'avons fait jusque là :
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
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
@ -16,7 +16,7 @@ groupe de conteneurs qui fonctionnent de concert, parfois avec des dépendances
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,
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.