Save tuto corrections
This commit is contained in:
parent
f5ee6b8534
commit
10448a6c8d
115 changed files with 1423 additions and 1289 deletions
|
|
@ -4,7 +4,7 @@ Mon premier conteneur
|
|||
---------------------
|
||||
|
||||
Afin de tester la bonne marche de notre installation, lançons notre premier
|
||||
conteneur avec la commande\ :
|
||||
conteneur avec la commande :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -13,7 +13,7 @@ docker container run hello-world
|
|||
</div>
|
||||
|
||||
Cette commande va automatiquement exécuter une série d'actions pour nous,
|
||||
comme indiqué dans le message affiché en retour :
|
||||
comme indiqué dans le message affiché en retour :
|
||||
|
||||
D'abord, le daemon va rechercher s'il possède localement l'image
|
||||
*hello-world*. Si ce n'est pas le cas, il va aller récupérer les différentes
|
||||
|
|
@ -23,7 +23,7 @@ conteneur. Enfin, il lance la commande par défaut, telle que définie dans les
|
|||
métadonnées de l'image.
|
||||
|
||||
Nous pouvons directement utiliser le client pour rechercher une image sur le
|
||||
registre, en utilisant la commande `search` :
|
||||
registre, en utilisant la commande `search` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -32,7 +32,7 @@ docker search mariadb
|
|||
</div>
|
||||
|
||||
Il est possible de mettre à jour les images locales, ou télécharger les couches
|
||||
d'images qui nous intéressent, en utilisant la commande `pull` :
|
||||
d'images qui nous intéressent, en utilisant la commande `pull` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -41,40 +41,42 @@ docker image pull ubuntu
|
|||
</div>
|
||||
|
||||
|
||||
#### Attention {-}
|
||||
::::: {.warning}
|
||||
|
||||
Les registres publics tels quel le Docker Hub mettent à disposition des images
|
||||
officielles, mais aussi des images créés par la communauté. Chaque utilisateur
|
||||
est libre d'envoyer une image qu'il a lui-même créée : soit car l'éditeur ne
|
||||
officielles, mais aussi des images créées par la communauté. Chaque utilisateur
|
||||
est libre d'envoyer une image qu'il a lui-même créé : soit car l'éditeur ne
|
||||
proposait pas d'image et que quelqu'un s'est dévoué pour la faire, soit parce
|
||||
qu'il avait des besoins plus spécifiques qui n'étaient pas couvert par l'image
|
||||
originale. Il est important de garder en tête que vous téléchargez des
|
||||
exécutables, et bien qu'ils s'exécutent dans un environnement isolé, ils
|
||||
peuvent contenir du code malveillant. **De la même manière que vous devez être
|
||||
attentif aux binaires que vous exécutez sur votre machine et au contexte de
|
||||
leurs téléchargements, ici assurez-vous d'avoir confiance dans la personne
|
||||
affiliée à l'image.**
|
||||
peuvent contenir du code malveillant.
|
||||
|
||||
**De la même manière que vous devez être attentif aux binaires que vous
|
||||
exécutez sur votre machine et au contexte de leurs téléchargements, ici
|
||||
assurez-vous d'avoir confiance dans la personne affiliée à l'image.**
|
||||
|
||||
:::::
|
||||
|
||||
### Arguments de la ligne de commande
|
||||
|
||||
Remarquez comment on interagit avec chaque *objet Docker* : dans la ligne de
|
||||
Remarquez comment on interagit avec chaque *objet Docker* : dans la ligne de
|
||||
commande, le premier mot clef est le type d'objet (`container`, `image`,
|
||||
`service`, `network`, `volume`, ...) ; ensuite, vient l'action que l'on
|
||||
`service`, `network`, `volume`, ...) ; ensuite, vient l'action que l'on
|
||||
souhaite faire dans ce cadre.[^oldcall]
|
||||
|
||||
[^oldcall]: cela n'a pas toujours été aussi simple, cette syntaxe n'existe que
|
||||
depuis la version 1.13 (janvier 2017). C'est pourquoi, lorsque vous ferez
|
||||
des recherches sur internet, vous trouverez de nombreux articles utilisant
|
||||
l'ancienne syntaxe, sans le type d'objets : `docker images` au lieu de
|
||||
`docker image ls`, `docker run` au lieu de `docker container run`, ...
|
||||
l'ancienne syntaxe, sans le type d'objets : `docker images` au lieu de
|
||||
`docker image ls`, `docker run` au lieu de `docker container run`, ...
|
||||
|
||||
L'ancienne syntaxe est dépréciée, mais il reste actuellement possible de
|
||||
l'utiliser.
|
||||
|
||||
Par exemple, pour consulter la liste des images dont nous disposons localement
|
||||
(soit parce qu'on les a téléchargées, soit parce que nous les avons créées
|
||||
nous-même), on utilise la commande `ls` sous le type d'objets `image` :
|
||||
nous-même), on utilise la commande `ls` sous le type d'objets `image` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -85,24 +87,26 @@ docker image ls
|
|||
|
||||
### *Image ID*, nom, tag
|
||||
|
||||
Chaque image est identifiable par son *Image ID* : il s'agit d'un long
|
||||
Chaque image est identifiable par son *Image ID* : il s'agit d'un long
|
||||
identifiant unique. Chaque modification qui est apportée à l'image
|
||||
générera un *Image ID* différent. Un peu comme un identifiant de
|
||||
commit dans Git.
|
||||
|
||||
Pour s'y retrouver, on utilise habituellement les noms des images :
|
||||
Pour s'y retrouver, on utilise habituellement les noms des images :
|
||||
`hello-world` est ainsi le nom de l'image
|
||||
`1b26826f602946860c279fce658f31050cff2c596583af237d971f4629b57792`.
|
||||
|
||||
Lorsque, comme dans le cas d'Ubuntu, il y a plusieurs *versions*
|
||||
disponibles, il est possible de préciser la version au moyen d'un
|
||||
*tag*. En consultant [la
|
||||
documentation](https://hub.docker.com/_/ubuntu) qui accompagne chaque
|
||||
conteneur, nous pouvons constater la présence de plusieurs versions
|
||||
d'Ubuntu : `trusty`, `xenial`, `focal` ou `bionic`.
|
||||
Lorsque, comme dans le cas d'Ubuntu, il y a plusieurs *versions* disponibles,
|
||||
il est possible de préciser la version au moyen d'un *tag*. En consultant la
|
||||
documentation[^hubDocUbuntu] qui accompagne chaque conteneur, nous pouvons
|
||||
constater la présence de plusieurs versions d'Ubuntu : `trusty`, `xenial`,
|
||||
`focal` ou `bionic`.
|
||||
|
||||
[^hubDocUbuntu]: Pour voir la documentation des images d'Ubuntu, consultez
|
||||
<https://hub.docker.com/_/ubuntu>
|
||||
|
||||
Par convention, lorsque l'on souhaite désigner un tag en particulier,
|
||||
on utilise la syntaxe suivante :
|
||||
on utilise la syntaxe suivante :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
|
|
@ -110,7 +114,7 @@ ubuntu:focal
|
|||
```
|
||||
</div>
|
||||
|
||||
Par exemple, pour lancer un conteneur Ubuntu Focal, on utilisera :
|
||||
Par exemple, pour lancer un conteneur Ubuntu Focal, on utilisera :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
|
|
@ -119,7 +123,7 @@ docker container run ubuntu:focal
|
|||
</div>
|
||||
|
||||
|
||||
Chaque nom d'image possède au moins un tag associé par défaut : *latest*. C'est
|
||||
Chaque nom d'image possède au moins un tag associé par défaut : *latest*. C'est
|
||||
le tag qui est automatiquement recherché lorsque l'on ne le précise pas en
|
||||
lançant l'image.
|
||||
|
||||
|
|
@ -127,11 +131,11 @@ lançant l'image.
|
|||
### Exécuter un programme dans un conteneur
|
||||
|
||||
Maintenant que nous avons à notre disposition l'image d'un conteneur Ubuntu,
|
||||
nous allons pouvoir jouer avec !
|
||||
nous allons pouvoir jouer avec !
|
||||
|
||||
La commande `run` de Docker prend comme derniers arguments le programme à
|
||||
lancer dans le conteneur ainsi que ses éventuels arguments. Essayons d'afficher
|
||||
un Hello World :
|
||||
un Hello World :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -146,7 +150,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.alpinelinux.org), vous pourriez
|
||||
tenter d'utiliser son gestionnaire de paquet `apk`, via :
|
||||
tenter d'utiliser son gestionnaire de paquet `apk`, via :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -184,7 +188,7 @@ programme à exécuter par défaut si l'on ne le précise pas dans la ligne de
|
|||
commande.
|
||||
|
||||
C'est grâce à cela que vous n'avez pas eu besoin de préciser de programme
|
||||
lorsque vous avez lancé l'image `hello-world` :
|
||||
lorsque vous avez lancé l'image `hello-world` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -193,7 +197,7 @@ docker container run hello-world
|
|||
</div>
|
||||
|
||||
Il est commun que le programme le plus attendu/approprié soit lancé par défaut,
|
||||
il est donc tout naturel que pour l'image `hello-world`, ce soit `/hello` :
|
||||
il est donc tout naturel que pour l'image `hello-world`, ce soit `/hello` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -201,20 +205,21 @@ docker container run hello-world /hello
|
|||
```
|
||||
</div>
|
||||
|
||||
L'image ne contenant que ce programme, vous ne pourrez pas y lancer de shell :
|
||||
L'image ne contenant que ce programme, vous ne pourrez pas y lancer de shell :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
```
|
||||
42sh$ docker container run hello-world /bin/sh
|
||||
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349:
|
||||
starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown.
|
||||
docker: Error response from daemon: OCI runtime create failed:
|
||||
container_linux.go:349: starting container process caused
|
||||
"exec: \"/bin/sh\": stat /bin/sh: no such file or directory"
|
||||
```
|
||||
</div>
|
||||
|
||||
Pour les images `alpine` et `ubuntu`, le programme par défaut est un shell
|
||||
(`/bin/ash` pour `alpine` et `/bin/bash` pour `ubuntu`), mais il y a une
|
||||
subtilité : il faut ajouter les options `--interactive` et `--tty` pour ne pas
|
||||
que `docker` nous rende la main tout de suite :
|
||||
subtilité : il faut ajouter les options `--interactive` et `--tty` pour ne pas
|
||||
que `docker` nous rende la main tout de suite :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -239,7 +244,7 @@ s'assure que l'entrée standard ne sera pas fermée (`close(2)`). Nous demandons
|
|||
interractif[^bashnointer].
|
||||
|
||||
[^bashnointer]: Mais il sera possible de l'utiliser sans allouer de TTY, comme
|
||||
dans cet exemple :
|
||||
dans cet exemple :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
|
|
@ -253,7 +258,7 @@ interractif[^bashnointer].
|
|||
L'option `-i` reste néanmoins nécessaire pour que l'entrée standard soit
|
||||
transmise au conteneur.
|
||||
|
||||
Rassurez-vous, on peut les abbréger en `-i` et `-t` :
|
||||
Rassurez-vous, on peut les abréger en `-i` et `-t` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -265,22 +270,22 @@ Rassurez-vous, on peut les abbréger en `-i` et `-t` :
|
|||
|
||||
### Les paramètres
|
||||
|
||||
Vous avez remarqué le placement des options `--tty` et `--interactive` ? Avant
|
||||
Vous avez remarqué le placement des options `--tty` et `--interactive` ? Avant
|
||||
le nom de l'image, elles sont utilisées par Docker pour modifier le comportement
|
||||
du `run`. En fait, tout comme `git(1)` et ses sous-commandes, chaque niveau de
|
||||
commande peut prendre des paramètres :
|
||||
commande peut prendre des paramètres :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker DOCKER_PARAMS container run RUN_OPTS image IMAGE_CMD IMAGE_ARGS ...
|
||||
docker DOCKER_PARAMS container run RUN_OPTS image IMAGE_CMD IMAGE_ARGS …
|
||||
```
|
||||
</div>
|
||||
|
||||
Par exemple :
|
||||
Par exemple :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
docker -H unix:///var/run/docker.sock container run -it alpine /bin/ash -c "echo foo"
|
||||
docker -H unix:///run/docker.sock container run -it alpine /bin/ash -c "echo foo"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
@ -295,13 +300,13 @@ conteneur.
|
|||
|
||||
Avant de quitter notre conteneur, regardons, à l'aide d'un autre terminal,
|
||||
l'état de notre conteneur. La commande suivante permet d'obtenir la liste des
|
||||
conteneurs en cours d'exécution :
|
||||
conteneurs en cours d'exécution :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ docker container ls
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
4c39fc049cd1 ubuntu "/bin/bash" 6 minutes ago Up 5 minutes suspicious_galileo
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
4c39fc049cd1 ubuntu "/bin/bash" 6 minutes ago Up 5 minutes bold_gates
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue