Save tuto corrections
This commit is contained in:
parent
f5ee6b8534
commit
10448a6c8d
115 changed files with 1423 additions and 1289 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 :
|
||||
|
||||

|
||||
|
|
|
|||
|
|
@ -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">
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue