TP1: Add images
This commit is contained in:
parent
651283b526
commit
1ca35a1d57
1
tutorial/1/not-published-ports.png
Symbolic link
1
tutorial/1/not-published-ports.png
Symbolic link
@ -0,0 +1 @@
|
||||
../docker-basis/not-published-ports.png
|
1
tutorial/1/published-ports.png
Symbolic link
1
tutorial/1/published-ports.png
Symbolic link
@ -0,0 +1 @@
|
||||
../docker-basis/published-ports.png
|
@ -9,8 +9,8 @@ de configuration, ... Lorsque le conteneur est en cours d'exécution, il y a
|
||||
plusieurs manières de contrôler ce qu'il se passe.
|
||||
|
||||
|
||||
docker logs
|
||||
-----------
|
||||
Consulter les journaux
|
||||
----------------------
|
||||
|
||||
La première étape consiste bien souvent à regarder ce que le conteneur affiche
|
||||
sur ses sorties standard et d'erreur. Lorsqu'il est lancé en monde *daemon*, il
|
||||
@ -64,8 +64,8 @@ initiale du conteneur se termine, tous les `exec` seront instantanément tués.
|
||||
:::::
|
||||
|
||||
|
||||
docker top
|
||||
----------
|
||||
Voir les processus
|
||||
------------------
|
||||
|
||||
Si plusieurs processus doivent s'exécuter dans un conteneur, un bon moyen de
|
||||
savoir s'ils sont tous actifs est d'utiliser :
|
||||
@ -79,3 +79,54 @@ docker container top cntr_name
|
||||
Cela liste tous les processus rattaché au conteneur nommé : à la fois les
|
||||
processus démarrés par le `run`, mais également les éventuels processus
|
||||
rattachés par `exec`.
|
||||
|
||||
|
||||
Inspecter les propriétés
|
||||
------------------------
|
||||
|
||||
Pour aller plus loin, découvrons la commande permettant d'afficher les
|
||||
propriétés internes des objets Docker.
|
||||
|
||||
Peut-être avez-vous encore un conteneur `youp0m` actif ?
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run -d -P registry.nemunai.re/youp0m
|
||||
0a1b2c3d4e5f...
|
||||
|
||||
docker container inspect 0a1b2c3d4e5f
|
||||
[
|
||||
{
|
||||
"Id": "0a1b2c3d4e5f...",
|
||||
"Created": "2032-06-31T18:42:23.0123456789Z",
|
||||
...
|
||||
```
|
||||
</div>
|
||||
|
||||
Le retour de cette commande va afficher un long enregistrement JSON, rempli
|
||||
d'informations importantes pour Docker. Nous y retrouvons par exemple
|
||||
l'emplacement réel des points de montage du système de fichiers de notre
|
||||
conteneur, les réseaux rejoints, les ports exposés, la commande par
|
||||
défaut, ... et tant d'autres choses.
|
||||
|
||||
Du fait que la commande retourne un objet JSON, nous pouvons facilement
|
||||
réutiliser cette sortie en la passant à l'utilitaire `jq` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ docker container inspect 0a1b2c3d4e5f | \
|
||||
jq -r '.NetworkSettings.Ports["8080/tcp"][0].HostPort'
|
||||
49153
|
||||
```
|
||||
</div>
|
||||
|
||||
Cela peut aussi être fait avec l'option `--format`, qui utilise la syntaxe des
|
||||
templates du langage Go :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ docker container inspect 0a1b2c3d4e5f \
|
||||
-f '{{ (index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort }}'
|
||||
49153
|
||||
```
|
||||
</div>
|
||||
|
@ -28,18 +28,50 @@ service soit lancé et écoute sur le port 8080. Est-ce le cas ?
|
||||
Non ! Car le service est contenerisé ! Il s'exécute dans son coin, sans
|
||||
interférer avec son hôte.
|
||||
|
||||
{ width=70% }
|
||||
|
||||
|
||||
### Redirection de ports
|
||||
|
||||
Nous pouvons rediriger le port avec l'argument <span lang="en-US">`-p dst_host:src_cntr`</span> :
|
||||
Nous pouvons rediriger le port avec l'argument <span lang="en-US">`--publish dst_host:src_cntr`</span> :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker container run -i -p 8080:8080 registry.nemunai.re/youp0m
|
||||
docker container run --publish 8080:8080 registry.nemunai.re/youp0m
|
||||
```
|
||||
</div>
|
||||
|
||||
Cette fois, nous pouvons accéder au service.
|
||||
Cet argument va faire effectuer à Docker une étape supplémentaire lorsqu'il
|
||||
démarerra le conteneur : il va devoir mettre en place une redirection du port
|
||||
de notre système local (8080) vers le port 8080 du conteneur.
|
||||
|
||||
{ width=70% }
|
||||
|
||||
::::: {.question}
|
||||
|
||||
#### Peut-on démarrer plusieurs conteurs utilisant le même port de notre système local ? {-}
|
||||
|
||||
Si l'on essai de lancer deux fois la commande de notre dernier `run`, nous
|
||||
obtenons l'erreur suivante :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
42sh$ docker container run --publish 8080:8080 registry.nemunai.re/youp0m
|
||||
docker: Error response from daemon: driver failed programming external connectivity on endpoint: Bind for 0.0.0.0:8080 failed: port is already allocated.
|
||||
```
|
||||
</div>
|
||||
|
||||
En effet, un port de la pile réseau de notre système ne peut être associé qu'à
|
||||
un seul et unique processus. Puisqu'il a déjà été attribué à notre précédent
|
||||
conteneur, il ne peut pas être à nouveau alloué.
|
||||
|
||||
En revanche, nous pouvons tout-à-fait lancer deux conteneurs `youp0m` sans
|
||||
rediriger leur port 8080, car le conteneur ne partage pas la pile réseau de
|
||||
l'hôte. Une nouvelle pile réseau est créée pour chaque conteneur.
|
||||
|
||||
:::::
|
||||
|
||||
Cette fois, nous pouvons bien accéder au service depuis notre navigateur.
|
||||
|
||||
Pour le moment, le service ne dispose d'aucune image à afficher, vous pouvez
|
||||
utiliser cette syntaxe pour ajouter une image :
|
||||
|
BIN
tutorial/docker-basis/not-published-ports.png
Normal file
BIN
tutorial/docker-basis/not-published-ports.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
BIN
tutorial/docker-basis/published-ports.png
Normal file
BIN
tutorial/docker-basis/published-ports.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
Loading…
x
Reference in New Issue
Block a user