TP1 ready
This commit is contained in:
parent
9281f01857
commit
f909d463ca
16 changed files with 265 additions and 122 deletions
|
@ -3,12 +3,11 @@
|
|||
Composition de conteneurs
|
||||
=========================
|
||||
|
||||
## Automatiser la construction et le lancement
|
||||
## 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
|
||||
contiendra les paramètres d'exécution (et éventuellement les méthodes de
|
||||
construction).
|
||||
contiendra les paramètres d'exécution.
|
||||
|
||||
<div lang="en-US">
|
||||
```yaml
|
||||
|
@ -137,12 +136,8 @@ Consultez
|
|||
[la documentation](https://docs.docker.com/compose/compose-file/) pour
|
||||
une liste exhaustive des options que nous pouvons utiliser.
|
||||
|
||||
Une fois que votre `docker-compose.yml` est prêt, lancez tout d'abord
|
||||
`docker-compose build` pour commencer la phase de build de tous les conteneurs
|
||||
listés dans le fichier.
|
||||
|
||||
Une fois le build terminé, nous pouvons lancer la commande suivante et admirer
|
||||
le résultat :
|
||||
Une fois que notre `docker-compose.yml` est prêt, nous pouvons lancer
|
||||
la commande suivante et admirer le résultat :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
|
@ -6,7 +6,7 @@ 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
|
||||
Owncloud et MySQL.
|
||||
l'interface d'administration du FIC et MySQL.
|
||||
|
||||
|
||||
## Conteneur central : la base de données
|
||||
|
@ -14,7 +14,7 @@ Owncloud et MySQL.
|
|||
Le premier conteneur qui doit être lancé est la base de données orientée séries
|
||||
temporelles :
|
||||
[InfluxDB](https://www.influxdata.com/time-series-platform/influxdb/).
|
||||
En effet, tous les autres conteneurs on besoin de cette base de données pour
|
||||
En effet, tous les autres conteneurs ont besoin de cette base de données pour
|
||||
fonctionner correctement : il serait impossible à *Chronograf* d'afficher les
|
||||
données sans base de données, tout comme *Telegraf* ne pourrait écrire les
|
||||
métriques dans une base de données à l'arrêt.
|
||||
|
@ -46,8 +46,8 @@ le client fourni :
|
|||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker container run --rm -it --link mytsdb:influxdb \
|
||||
> --entrypoint "/usr/bin/influx" influxdb -host influxdb
|
||||
42sh$ docker container run --rm -it --link mytsdb:influxdb --entrypoint "/usr/bin/influx" \
|
||||
influxdb -host influxdb
|
||||
Connected to http://influxdb:8086 version 1.6.3
|
||||
InfluxDB shell version: 1.6.3
|
||||
> show databases
|
||||
|
@ -74,8 +74,8 @@ docker container logs mytsdb
|
|||
|
||||
\hspace{2em}**Exercice :** Ajoutez à la ligne de commande de lancement du
|
||||
conteneur les bon(s) volume(s) qui permettront de ne pas perdre les données
|
||||
d'influxDB si nous devions redémarrer le conteneur.
|
||||
|
||||
d'influxDB si nous devions redémarrer le conteneur. Aidez-vous pour cela de la
|
||||
[documentation du conteneur](https://hub.docker.com/_/influxdb).
|
||||
|
||||
|
||||
## Collecter les données locales
|
||||
|
@ -108,8 +108,8 @@ Et observons ensuite :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ docker container run --rm -it --link mytsdb:influxdb \
|
||||
> --entrypoint "/usr/bin/influx" influxdb -host influxdb
|
||||
42sh$ docker container run --rm -it --link mytsdb:influxdb --entrypoint "/usr/bin/influx" \
|
||||
influxdb -host influxdb
|
||||
InfluxDB shell version: 1.6.3
|
||||
> show databases
|
||||
name: databases
|
||||
|
|
|
@ -20,7 +20,10 @@ mettrez en place les *volumes* et *networks* nécessaire au bon fonctionnement
|
|||
de la stack.
|
||||
|
||||
Le résultat final attendu doit permettre d'afficher dans `chronograf` l'hôte
|
||||
auto-monitoré par la stack, sans plus de configuration.
|
||||
auto-monitoré par la stack, sans plus de configuration. Vous aurez pour cela
|
||||
éventuellement besoin de placer des fichiers de configuration à côté de votre
|
||||
`docker-compose.yml`, afin de pouvoir inclure ces configurations dans les
|
||||
conteneurs, sans avoir besoin de reconstruire ces conteneurs.
|
||||
|
||||
|
||||
Modalités de rendu
|
||||
|
@ -38,6 +41,9 @@ et exclusivement à celle-ci que vous devez envoyer vos rendus. Tout rendu
|
|||
envoyé à une autre adresse et/ou non signé et/ou reçu après la correction ne
|
||||
sera pas pris en compte.
|
||||
|
||||
Par ailleurs, n'oubliez pas de répondre à
|
||||
[l'évaluation du cours](https://www.epitaf.fr/moodle/mod/quiz/view.php?id=213).
|
||||
|
||||
|
||||
Tarball
|
||||
-------
|
||||
|
@ -50,11 +56,89 @@ cela dépendra de votre avancée dans le projet) :
|
|||
|
||||
<div lang="en-US">
|
||||
```
|
||||
login_x-TP2/
|
||||
login_x-TP2/tick/
|
||||
login_x-TP2/tick/docker-compose.yml
|
||||
login_x-TP2/tick/...
|
||||
login_x-TP1/
|
||||
login_x-TP1/ficadmin-run.sh
|
||||
login_x-TP1/docker-compose.yml
|
||||
login_x-TP1/...
|
||||
```
|
||||
</div>
|
||||
|
||||
Utilisez la même tarball pour le rendu que pour la partie précédente.
|
||||
|
||||
## Signature du rendu
|
||||
|
||||
Deux méthodes sont utilisables pour signer votre rendu :
|
||||
|
||||
* signature du courriel ;
|
||||
* signature de la tarball.
|
||||
|
||||
Dans les deux cas, si vous n'en avez pas déjà une, vous devrez créer une clef
|
||||
PGP à **votre nom et prénom**.
|
||||
|
||||
Pour valider la signature, il est nécessaire d'avoir reçu la clef publique
|
||||
**séparément**. Vous avez le choix de l'uploader sur un serveur de clefs, soit
|
||||
de me fournir votre clef en main propre, soit l'envoyer dans un courriel
|
||||
distinct.
|
||||
|
||||
### Signature du courriel
|
||||
|
||||
[Enigmail](https://enigmail.net) est une extension très bien réputée pour
|
||||
signer ses mails depuis Thunderbird.
|
||||
|
||||
Utilisez le service automatique <signcheck@nemunai.re> pour savoir si votre
|
||||
courriel est correctement signé et que je suis en mesure de vérifier la
|
||||
signature.
|
||||
|
||||
|
||||
### Astuces
|
||||
|
||||
#### No public key
|
||||
|
||||
Si vous recevez un rapport avec l'erreur suivante :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
[FAIL] Bad signature. Here is the gnupg output:
|
||||
|
||||
gpg: Signature made Tue Jan 01 16:42:23 2014 CET
|
||||
gpg: using RSA key 842807A84573CC96
|
||||
gpg: requesting key E2CCD99DD37BD32E from hkp server keys.openpgp.org
|
||||
gpg: Can't check signature: No public key
|
||||
```
|
||||
</div>
|
||||
|
||||
C'est que votre clef publique n'est pas dans mon trousseau et que les
|
||||
méthodes de récupération automatique n'ont pas permis de la
|
||||
trouver. Uploadez votre clef sur [un serveur de
|
||||
clefs](https://keys.openpgp.org/) ou envoyez un courriel au service
|
||||
avec votre clef publique en pièce-jointe, avant de retenter votre
|
||||
rendu.
|
||||
|
||||
|
||||
#### Not explicit username
|
||||
|
||||
Si vous recevez un rapport avec l'erreur suivante :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
[FAIL] The username of your key is not explicit, I can't find you.
|
||||
```
|
||||
</div>
|
||||
|
||||
Votre clef ne contient sans doute pas vos noms et prénoms ou l'adresse
|
||||
électronique associée à la clef n'est pas celle que j'ai dans ma base de
|
||||
données.
|
||||
|
||||
|
||||
#### I've decided to skip your e-mail
|
||||
|
||||
Si vous recevez un rapport concluant ainsi :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
After analyzing your e-mail, I've decided to SKIP it.
|
||||
```
|
||||
</div>
|
||||
|
||||
Cela signifie que la lecture de votre courriel qui a été préférée n'est pas
|
||||
celle d'un rendu. Vérifiez que vous n'envoyez pas votre clef publique avec
|
||||
votre rendu.
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
Mise en place
|
||||
=============
|
||||
|
||||
Durant le premier 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ée dans les
|
||||
usages de la communauté, et parfois même approprié par Docker.
|
||||
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ée dans les usages de la communauté, et parfois même approprié par Docker.
|
||||
|
||||
|
||||
## `docker-compose`
|
||||
|
||||
Pour ce TP, nous allons également avoir besoin de `docker-compose`.
|
||||
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
|
||||
|
@ -33,7 +33,7 @@ tous les scripts. Nous pouvons l'installer en suivant la procédure suivante :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-Linux-x86_64 \
|
||||
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64 \
|
||||
> /usr/bin/docker-compose
|
||||
chmod +x /usr/bin/docker-compose
|
||||
```
|
||||
|
@ -54,7 +54,7 @@ Comme avec Docker, nous pouvons vérifier le bon fonctionnement de
|
|||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker-compose --version
|
||||
docker-compose version: 1.16.1
|
||||
docker-compose version: 1.24.1
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -64,7 +64,7 @@ TP ! Alors n'attendons pas, partons à l'aventure !
|
|||
|
||||
## Play With Docker
|
||||
|
||||
Tout comme pour le TP précédent, si vous avez des difficultés pour réaliser les
|
||||
exercices sur vos machines, 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.
|
||||
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
|
||||
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.
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
---
|
||||
title: Virtualisation légère -- TP n^o^ 2.2
|
||||
subtitle: Aller plus loin avec Docker
|
||||
title: Virtualisation légère -- TP n^o^ 1.2
|
||||
subtitle: Les bases de Docker -- compose
|
||||
author: Pierre-Olivier *nemunaire* [Mercier]{.smallcaps}
|
||||
institute: EPITA
|
||||
date: Jeudi 18 octobre 2017
|
||||
date: Mercredi 2 octobre 2019
|
||||
abstract: |
|
||||
Dans cette deuxième partie du TP, nous allons approfondir l'utilisation de
|
||||
Docker !
|
||||
Dans cette deuxième partie du TP, nous allons apprendre à déployer
|
||||
un groupe de conteneurs !
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Tous les éléments de ce TP (exercices et projet) sont à rendre à
|
||||
<virli@nemunai.re> au plus tard le mercredi 24 octobre 2017 à 0
|
||||
h 42. Consultez la dernière section de chaque partie pour plus d'information
|
||||
sur les éléments à rendre.
|
||||
Le TP se termine par un petit projet à rendre à <virli@nemunai.re>
|
||||
au plus tard le mercredi 16 octobre 2019 à 13 h 42, des questions de
|
||||
cours sont également à compléter avant cette date sur
|
||||
Epitaf. Consultez la dernière partie de ce TP pour les modalités.
|
||||
|
||||
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
|
||||
vous devrez m'envoyer vos rendus signés avec votre clef PGP. Pensez à
|
||||
[me](https://pgp.mit.edu/pks/lookup?op=vindex&search=0x842807A84573CC96)
|
||||
faire signer votre clef et n'hésitez pas à [faire signer votre
|
||||
clef](https://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
|
||||
En tant que personnes sensibilisées à la sécurité des échanges
|
||||
électroniques, vous devrez m'envoyer vos rendus signés avec votre
|
||||
clef PGP. Pensez à
|
||||
[me](https://keys.openpgp.org/search?q=nemunaire%40nemunai.re)
|
||||
faire signer votre clef et n'hésitez pas à [faire signer la
|
||||
votre](https://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
|
||||
...
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
include ../pandoc-opts.mk
|
||||
|
||||
SOURCES = tutorial.md installation.md what.md first.md cleaning.md ex-flask.md volumes.md linking.md secrets.md rendu.md
|
||||
SOURCES = tutorial.md installation.md what.md first.md cleaning.md ex-flask.md volumes.md linking.md
|
||||
|
||||
|
||||
all: tutorial.pdf
|
||||
|
|
|
@ -65,9 +65,10 @@ docker container prune
|
|||
```
|
||||
</div>
|
||||
|
||||
On aura tendance à vouloir supprimer tous les objets inutiles d'un seul coup, via :
|
||||
|
||||
## `docker-gc`
|
||||
|
||||
Vous pouvez également utiliser l'image
|
||||
[https://github.com/spotify/docker-gc](`docker-gc`) pour effectuer le ménage de
|
||||
manière automatique, plus fréquemment. Mais attention à vos données !
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker system prune
|
||||
```
|
||||
</div>
|
||||
|
|
|
@ -100,7 +100,7 @@ il s'agit des mêmes options\ :
|
|||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run -d -p 8080:8081 nemunaire/youp0m
|
||||
docker container run -d -p 8081:8080 nemunaire/youp0m
|
||||
```
|
||||
</div>
|
||||
|
||||
|
@ -111,6 +111,41 @@ voit bien que ceux-ci ne partagent pas leur système de fichiers : notre
|
|||
nouvelle instance est encore immaculée.
|
||||
|
||||
|
||||
## Paramètres de lancement
|
||||
|
||||
`youp0m` dispose d'une interface d'administration minimaliste, pour modérer les
|
||||
images soumises. Celle-ci est accessible par mot de passe (ou est désactivée si
|
||||
aucun identifiant n'est trouvé). L'aide du programme indique que cela est géré
|
||||
par l'argument `-htpasswd`, mais encore faut-il pouvoir recopier un fichier
|
||||
créé à l'extérieur du conteneur...
|
||||
|
||||
Outre les arguments que l'on peut passer au premier processus du conteneur, la
|
||||
plupart des images peuvent adapter leur comportement en fonction de variables
|
||||
d'environnement que l'on passe en paramètre.
|
||||
|
||||
Cette bonne pratique est recommandée par <https://12factor.net/>, qui détaille
|
||||
les raisons qui devraient pousser les développeurs à privilégier les variables
|
||||
d'environnements aux arguments sur la ligne de commande.
|
||||
|
||||
Il se trouve que les conteneurs `youp0m` peuvent créer le fichier `htpasswd`,
|
||||
s'ils sont démarrés avec les variables d'environnement :
|
||||
|
||||
- `YOUP0M_USERNAME` : nom d'utilisateur pour l'administrateur (par défaut admin) ;
|
||||
- `YOUP0M_PASSWORD` : mot de passe de l'utilisateur.
|
||||
|
||||
Pour ajouter une variable d'environnement, cela se passe dans la commande
|
||||
`run`, en ajoutant une ou plusieurs options `-e` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run -e YOUP0M_PASSWORD=foobar -p 8080:8080 nemunaire/youp0m
|
||||
```
|
||||
</div>
|
||||
|
||||
Une fois lancé, ce conteneur exposera une interface d'administration à cette
|
||||
adresse : <http://localhost:8080/admin/>.
|
||||
|
||||
|
||||
## Arrêt des conteneurs et persistance des données
|
||||
|
||||
Lorsque l'on souhaite stopper un conteneur lancé en tâche de fond, on utilise
|
||||
|
|
|
@ -105,7 +105,7 @@ transféré dans le conteneur.
|
|||
|
||||
Pour nous en convaincre, nous pouvons tenter d'exécuter un programme qui n'est
|
||||
pas présent sur notre machine, mais bien uniquement dans le conteneur. Si vous
|
||||
n'utilisez pas [Alpine Linux](https://www.alpine-linux.org), vous pourriez
|
||||
n'utilisez pas [Alpine Linux](https://www.alpinelinux.org), vous pourriez
|
||||
tenter d'utiliser son gestionnaire de paquet `apk`, via :
|
||||
|
||||
<div lang="en-US">
|
||||
|
|
|
@ -46,11 +46,8 @@ correspondant à votre distribution :
|
|||
|
||||
<https://docs.docker.com/install/linux/docker-ce/debian/>
|
||||
|
||||
|
||||
### Et Kali Linux alors ?
|
||||
|
||||
Kali étant basée sur Debian, référez-vous à la procédure d'installation de
|
||||
Debian *Jessie or newer*.
|
||||
**Et Kali Linux alors ?** Kali étant basée sur Debian, référez-vous à
|
||||
la procédure d'installation de cette distribution.
|
||||
|
||||
|
||||
## Windows et macOS
|
||||
|
@ -62,8 +59,8 @@ pourrez interagir avec lui via votre ligne de commande habituelle.
|
|||
|
||||
Téléchargez la version correspondante à votre système d'exploitation :
|
||||
|
||||
* [Docker for Mac](https://store.docker.com/editions/community/docker-ce-desktop-mac)
|
||||
* [Docker for Windows](https://store.docker.com/editions/community/docker-ce-desktop-windows)
|
||||
* [Docker for Mac](https://hub.docker.com/editions/community/docker-ce-desktop-mac)
|
||||
* [Docker for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows)
|
||||
|
||||
Une fois l'installation terminée, lancez l'application : elle ajoutera une
|
||||
icône dans la zone de notification, vous permettant de contrôler l'exécution de
|
||||
|
@ -76,6 +73,10 @@ Si vous rencontrez des difficultés pour vous lancer, le projet
|
|||
[Play With Docker](https://labs.play-with-docker.com/) vous donne accès à
|
||||
un bac à sable dans lequel vous pourrez commencer à faire ce TP.
|
||||
|
||||
Il vous faudra disposer [d'un compte
|
||||
Docker](https://hub.docker.com/signup). Une fois identifié, vous pourrez créer
|
||||
une nouvelle instance, et vous connecter dessus via SSH.
|
||||
|
||||
|
||||
## Vérifier la bonne marche de l'installation
|
||||
|
||||
|
|
BIN
tutorial/docker-basis/layers.png
Normal file
BIN
tutorial/docker-basis/layers.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 73 KiB |
|
@ -20,7 +20,7 @@ partie comment lier deux conteneurs.
|
|||
## Mise en place du webservice
|
||||
|
||||
Nous allons utiliser l'interface d'administration des serveurs du FIC :
|
||||
[`nemunaire/fic-admin`](https://hub.docker.com/r/nemunaire/fic-admin/).
|
||||
[`nemunaire/fic-admin`](https://hub.docker.com/r/nemunaire/fic-admin).
|
||||
|
||||
En lançant le conteneur avec les mêmes options que `youp0m`, les journaux
|
||||
indiquent que le service cherche à se connecter à une base de données. Il va
|
||||
|
@ -98,29 +98,6 @@ mutuellement se découvrir grâce à un système de résolution de nom basé sur
|
|||
nom de conteneur.
|
||||
|
||||
|
||||
## Entrer dans un conteneur en cours d'exécution
|
||||
|
||||
Dans certaines circonstances, les journaux ne sont pas suffisant pour
|
||||
déboguer correctement l'exécution d'un conteneur.
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run mysql
|
||||
```
|
||||
</div>
|
||||
|
||||
...
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container exec -it /bin/bash
|
||||
ip ...
|
||||
```
|
||||
</div>
|
||||
|
||||
Notez qu'il n'est pas possible d'`exec` dans un conteneur éteint, et que si la commande initiale du conteneur se termine, tous les `exec` seront également tués.
|
||||
|
||||
|
||||
## Exercice {-}
|
||||
|
||||
À vous maintenant de connecter une instance de `nemunaire/fic-admin` à sa base
|
||||
|
@ -128,31 +105,63 @@ de données.
|
|||
|
||||
Ne vous embêtez pas avec les mots de passes des services, initialisez la base
|
||||
de données avec le nom d'utilisateur et le mot de passe par défaut. Vous les
|
||||
obtiendrez en lisant l'aide :
|
||||
obtiendrez en lisant l'aide (et la [documentation de l'image
|
||||
MySQL](https://hub.docker.com/_/mysql/)) :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run --rm -e MYSQL_HOST="tcp(mysql_cntr_name:3306)" nemunaire/fic-admin -help
|
||||
docker container run --rm -e MYSQL_HOST=mysql_cntr_name nemunaire/fic-admin -help
|
||||
```
|
||||
</div>
|
||||
|
||||
Notez la définition de la variable d'environnement `MYSQL_HOST`[^12factors],
|
||||
celle-ci indique le nom du serveur vers lequel le service doit se connecter.
|
||||
|
||||
[^12factors]: Lecture intéressante : <https://12factor.net/>
|
||||
Notez la définition de la variable d'environnement `MYSQL_HOST`, celle-ci
|
||||
indique le nom du serveur vers lequel le service doit se connecter.
|
||||
|
||||
Vous aurez besoin de créer un volume pour stocker la base de données, un réseau
|
||||
dans lequel vous connecterez la base de données et le conteneur applicatif.
|
||||
|
||||
Vous devriez pouvoir déboguer le réseau, au sein d'un conteneur, par exemple en
|
||||
utilisant :
|
||||
Une fois le service `fic-admin` lancé, vous pouvez exposer le port 8081, sur
|
||||
lequel vous devriez voir l'interface d'admin : <http://localhost:8081/>.
|
||||
|
||||
Placez les différentes commandes (volumes, réseau, `run`, ...) dans un
|
||||
script `ficadmin-run.sh`, que vous rendrez à la fin du TP. Vous
|
||||
devriez pouvoir appeler ce script plusieurs fois, sans que les données
|
||||
ne soient perdues, entre deux arrêts.
|
||||
|
||||
|
||||
### Exemple d'exécution
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker container exec -it ficadmin_cntr_name /bin/bash
|
||||
(incntnr)# ping mysql_cntr_name
|
||||
```bash
|
||||
42sh$ ./ficadmin-run.sh
|
||||
http://localhost:12345/
|
||||
42sh$ #docker kill db ficadmin
|
||||
42sh$ ./ficadmin-run.sh # le script relancera une base de données,
|
||||
# sans avoir perdu les données
|
||||
http://localhost:12345/
|
||||
```
|
||||
</div>
|
||||
|
||||
Une fois le service `fic-admin` lancé, vous pouvez exposer le port 8081, sur
|
||||
lequel vous devriez voir l'interface d'admin : <http://localhost:8081/>.
|
||||
|
||||
### Entrer dans un conteneur en cours d'exécution
|
||||
|
||||
Dans certaines circonstances, les journaux ne sont pas suffisant pour déboguer
|
||||
correctement l'exécution d'un conteneur.
|
||||
|
||||
En réalisant l'exercice, vous serez sans doute confronté à des comportements
|
||||
étranges, que vous ne pourriez comprendre qu'en ayant la main sur le conteneur,
|
||||
via un shell.
|
||||
|
||||
Lorsqu'un conteneur est actif, vous pouvez y lancer un nouveau processus,
|
||||
notamment un shell par exemple.
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container exec -it ficadmin /bin/bash
|
||||
(inctnr)$ ping mysql_cntr_name
|
||||
```
|
||||
</div>
|
||||
|
||||
Notez qu'il n'est pas possible d'`exec` dans un conteneur éteint, et que si la
|
||||
commande initiale du conteneur se termine, tous les `exec` seront également
|
||||
tués.
|
||||
|
|
|
@ -114,16 +114,17 @@ Si vous recevez un rapport avec l'erreur suivante :
|
|||
|
||||
gpg: Signature made Tue Jan 01 16:42:23 2014 CET
|
||||
gpg: using RSA key 842807A84573CC96
|
||||
gpg: requesting key E2CCD99DD37BD32E from hkp server pool.sks-keyservers.net
|
||||
gpg: requesting key E2CCD99DD37BD32E from hkp server keys.openpgp.org
|
||||
gpg: Can't check signature: No public key
|
||||
```
|
||||
</div>
|
||||
|
||||
C'est que votre clef publique n'est pas dans mon trousseau et que les méthodes
|
||||
de récupération automatique n'ont pas permis de la trouver. Uploadez votre
|
||||
clef sur un serveur de clefs (et attendez quelques minutes sa propagation) ou
|
||||
envoyez un courriel au service avec votre clef publique en pièce-jointe, avant
|
||||
de retenter votre rendu.
|
||||
C'est que votre clef publique n'est pas dans mon trousseau et que les
|
||||
méthodes de récupération automatique n'ont pas permis de la
|
||||
trouver. Uploadez votre clef sur [un serveur de
|
||||
clefs](https://keys.openpgp.org/) ou envoyez un courriel au service
|
||||
avec votre clef publique en pièce-jointe, avant de retenter votre
|
||||
rendu.
|
||||
|
||||
|
||||
#### Not explicit username
|
||||
|
|
|
@ -10,14 +10,14 @@ abstract: |
|
|||
\vspace{1em}
|
||||
|
||||
Le TP se termine par un petit projet à rendre à <virli@nemunai.re>
|
||||
au plus tard le mercredi 16 octobre 2018 à 13 h 42, des questions de
|
||||
au plus tard le mercredi 16 octobre 2019 à 13 h 42, des questions de
|
||||
cours sont également à compléter avant cette date sur
|
||||
Epitaf. Consultez la dernière partie de ce TP pour les modalités.
|
||||
|
||||
En tant que personnes sensibilisées à la sécurité des échanges
|
||||
électroniques, vous devrez m'envoyer vos rendus signés avec votre
|
||||
clef PGP. Pensez à
|
||||
[me](https://pgp.mit.edu/pks/lookup?op=vindex&search=0x842807A84573CC96)
|
||||
[me](https://keys.openpgp.org/search?q=nemunaire%40nemunai.re)
|
||||
faire signer votre clef et n'hésitez pas à [faire signer la
|
||||
votre](https://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
|
||||
...
|
||||
|
|
|
@ -74,15 +74,6 @@ docker container run --name mydb --mount source=prod_db,target=/var/lib/mysql \
|
|||
Lorsque le volume est vide, si des données sont présentes à l'endroit du point
|
||||
de montage, celles-ci sont recopiées dans le volume.
|
||||
|
||||
Si plus tard, vous souhaitez créer un conteneur chargé de faire des
|
||||
sauvegardes, vous pourriez le lancer comme ceci :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run -it --volume-from mydb busybox /bin/bash
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
## Volumes temporaires
|
||||
|
||||
|
@ -101,3 +92,29 @@ docker container run --mount type=tmpfs,target=/srv/images nemunaire/youp0m
|
|||
En cas de crash de la machine, le contenu sera perdu, mais il reste
|
||||
possible d'utiliser `--volume-from` afin de partager le volume avec un
|
||||
autre conteneur.
|
||||
|
||||
|
||||
## Partage de volumes entre conteneurs
|
||||
|
||||
Les volumes sont des espaces détachés des conteneurs, particulièrement utiles
|
||||
pour mettre à jour ou relancer un conteneur, sans perdre les données. Un autre
|
||||
intérêt, est de pouvoir partager des fichiers entre plusieurs conteneurs.
|
||||
|
||||
Il est ainsi parfaitement possible de lancer deux conteneurs qui partagent le
|
||||
même volume :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run -d --mount source=prod_youp0m,target=/srv/images -p 8080:8080 nemunaire/youp0m
|
||||
docker container run -d --mount source=prod_youp0m,target=/srv/images -p 8081:8080 nemunaire/youp0m
|
||||
```
|
||||
</div>
|
||||
|
||||
Dans cet exemple, l'ajout d'une image dans un conteneur, l'ajoutera également
|
||||
dans le second.
|
||||
|
||||
Un exemple plus intéressant serait sur une architecture de micro-services
|
||||
traitant des fichiers de grande taille : plutôt que de faire passer les
|
||||
fichiers par un système de message/socket, on peut partager un volume pour
|
||||
épargner les coûts de transferts inutiles, lorsqu'ils ne changent pas de
|
||||
machine.
|
||||
|
|
|
@ -63,8 +63,7 @@ Les registres sont des plates-formes de stockage, publiques ou privées,
|
|||
contenant des images. Ils permettent de récupérer des images, mais également
|
||||
d'en envoyer.
|
||||
|
||||
Le registre utilisé de base est le [Docker Store](https://store.docker.com/) :
|
||||
il contient à la fois des images officielles (ubuntu, debian, nginx, ...), des
|
||||
images créées par des utilisateurs ([Docker Hub](https://hub.docker.com/)),
|
||||
mais aussi des images de grands éditeurs, payantes, à destination des
|
||||
entreprises.
|
||||
Le registre utilisé de base est le [Docker Hub](https://hub.docker.com/) : il
|
||||
contient à la fois des images officielles (ubuntu, debian, nginx, ...), des
|
||||
images créées par des utilisateurs, mais aussi des images de grands éditeurs,
|
||||
payantes, à destination des entreprises.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue