Save tuto corrections
This commit is contained in:
parent
f5ee6b8534
commit
10448a6c8d
115 changed files with 1423 additions and 1289 deletions
|
|
@ -12,14 +12,14 @@ ses données, mais la plupart des applications réclament un serveur de base de
|
|||
données.
|
||||
|
||||
Les bonnes pratiques nous dictent de ne pas placer plus d'un service par
|
||||
conteneur : en effet, on peut vouloir mettre à jour l'applicatif sans pour
|
||||
conteneur : en effet, on peut vouloir mettre à jour l'applicatif sans pour
|
||||
autant redémarrer sa base de données, etc. Nous allons donc voir dans cette
|
||||
partie comment lier deux conteneurs.
|
||||
|
||||
|
||||
## Mise en place du webservice
|
||||
|
||||
Nous allons utiliser l'interface d'administration des serveurs du FIC :
|
||||
Nous allons utiliser l'interface d'administration des serveurs du FIC :
|
||||
[`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
|
||||
|
|
@ -30,17 +30,17 @@ MariaDB](https://hub.docker.com/_/mariadb).
|
|||
|
||||
## Les pilotes réseau
|
||||
|
||||
Docker propose de base trois pilotes (*drivers*) pour « gérer » cela :
|
||||
Docker propose de base trois pilotes (*drivers*) pour « gérer » cela :
|
||||
|
||||
- `none` : pour limiter les interfaces réseau du conteneur à l'interface de
|
||||
- `none` : pour limiter les interfaces réseau du conteneur à l'interface de
|
||||
loopback `lo` ;
|
||||
- `host` : pour partager la pile réseau avec l'hôte ;
|
||||
- `bridge` : pour créer une nouvelle pile réseau par conteneur et rejoindre un
|
||||
- `host` : pour partager la pile réseau avec l'hôte ;
|
||||
- `bridge` : pour créer une nouvelle pile réseau par conteneur et rejoindre un
|
||||
pont réseau dédié.
|
||||
|
||||
|
||||
Ces trois *drivers* sont instanciés de base dans Docker avec le même nom que
|
||||
leur pilote. Pour consulter la liste de réseaux utilisables, lancez :
|
||||
leur pilote. Pour consulter la liste de réseaux utilisables, lancez :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
|
|
@ -52,7 +52,7 @@ d5d907add6e2 host host local
|
|||
```
|
||||
</div>
|
||||
|
||||
Par défaut, c'est le réseau `bridge` (de type `bridge`) qui est employé : ce
|
||||
Par défaut, c'est le réseau `bridge` (de type `bridge`) qui est employé : ce
|
||||
réseau utilise le pont `docker0` que vous pouvez voir dans vos interfaces
|
||||
réseau via `ip link`. C'est via ce pont que les conteneurs peuvent avoir accès
|
||||
à Internet, au travers d'une couche de NAT.
|
||||
|
|
@ -76,7 +76,7 @@ Afin de contrôler quels échanges peuvent être réalisés entre les conteneurs
|
|||
est recommandé de créer des réseaux utilisateur.
|
||||
|
||||
La création d'un réseau se fait tout simplement au travers des sous-commandes
|
||||
relatives aux objets Docker `network` :
|
||||
relatives aux objets Docker `network` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -86,7 +86,7 @@ docker network create --driver bridge my_fic
|
|||
|
||||
C'est ensuite ce nom de réseau que vous passerez à l'option `--network` de vos
|
||||
`run`, ou vous pouvez également faire rejoindre un conteneur déjà lancé à un
|
||||
réseau :
|
||||
réseau :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -97,84 +97,3 @@ docker network connect NETWORK CONTAINER
|
|||
Lorsque plusieurs conteneurs ont rejoint un réseau utilisateur, ils peuvent
|
||||
mutuellement se découvrir grâce à un système de résolution de nom basé sur leur
|
||||
nom de conteneur.
|
||||
|
||||
|
||||
## Exercice {-}
|
||||
|
||||
À vous maintenant de connecter une instance de `nemunaire/fic-admin` à sa base
|
||||
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 la [documentation de l'image
|
||||
fic-admin](https://hub.docker.com/r/nemunaire/fic-admin/) :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
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`, 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.
|
||||
|
||||
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">
|
||||
```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>
|
||||
|
||||
|
||||
### Au secours, ça veut pas se connecter !
|
||||
|
||||
Lorsque nous lançons pour la première fois notre conteneur MySQL ou MariaDB, un
|
||||
script est chargé d'initialisé le volume attaché à `/var/lib/mysql`. Les
|
||||
démarrage suivant, ou si vous réutilisez un volume déjà initialisé avec une
|
||||
base de données, le script ne refait pas d'initialisation. Même si les
|
||||
variables d'environnement ont changées.
|
||||
|
||||
Si vous rencontrez des difficultés pour connecter votre conteneur `fic-admin` à
|
||||
`my-db`, prenez le temps de recréer un volume.
|
||||
|
||||
|
||||
### Entrer dans un conteneur en cours d'exécution
|
||||
|
||||
Dans certaines circonstances, les journaux ne sont pas suffisants 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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue