Save tuto corrections
This commit is contained in:
parent
f5ee6b8534
commit
10448a6c8d
115 changed files with 1425 additions and 1291 deletions
|
@ -1,6 +1,6 @@
|
|||
\newpage
|
||||
|
||||
Ma première image ... par `Dockerfile`
|
||||
Ma première image ... par `Dockerfile`
|
||||
--------------------------------------
|
||||
|
||||
Pour construire une image, nous ne sommes pas obligés de passer par une série
|
||||
|
@ -22,7 +22,7 @@ l'intitulé d'une instruction (que l'on écrit généralement en majuscule), ell
|
|||
est suivie de ses arguments.
|
||||
|
||||
Dans notre exemple, nous utilisons `FROM`{.dockerfile} qui indique une image de
|
||||
départ à utiliser ; `RUN`{.dockerfile} est une commande qui sera exécutée dans
|
||||
départ à utiliser ; `RUN`{.dockerfile} est une commande qui sera exécutée dans
|
||||
le conteneur, dans le but de le construire.
|
||||
|
||||
Pour lancer la construction de la nouvelle image, créons un nouveau dossier ne
|
||||
|
@ -136,9 +136,9 @@ Rendez-vous ensuite dans votre navigateur sur <http://localhost:49153/>.
|
|||
#### À vous de jouer {-}
|
||||
|
||||
Utilisez l'instruction `COPY`{.dockerfile} pour afficher votre propre
|
||||
`index.html` remplaçant celui installé de base par `nginx`. Si vous manquez
|
||||
`index.html` remplaçant celui installé de base par `nginx`. <!--Si vous manquez
|
||||
d'inspiration, utilisez [cette page de compte à
|
||||
rebours](https://virli.nemunai.re/countdown.html).
|
||||
rebours](https://virli.nemunai.re/countdown.html).-->
|
||||
|
||||
|
||||
### Les caches
|
||||
|
@ -177,9 +177,10 @@ images), en haut du `Dockerfile`.
|
|||
L'instruction `LABEL`{.dockerfile} permet d'ajouter une métadonnée à une image,
|
||||
sous forme de clef/valeur.
|
||||
|
||||
Une métadonnée
|
||||
[courante](https://github.com/nginxinc/docker-nginx/blob/master/stable/debian/Dockerfile#L8)
|
||||
est d'indiquer le nom du mainteneur de l'image :
|
||||
Une métadonnée courante[^MAINTAINER] est d'indiquer le nom du
|
||||
mainteneur de l'image :
|
||||
|
||||
[^MAINTAINER]: Voir par exemple : <https://github.com/nginxinc/docker-nginx/blob/master/stable/debian/Dockerfile#L8>
|
||||
|
||||
<div lang="en-US">
|
||||
```dockerfile
|
||||
|
@ -221,15 +222,15 @@ retirez cette option pour voir ce qui ne va pas, ou utilisez la commande
|
|||
`docker container logs`.
|
||||
|
||||
|
||||
### Construire son application au moment de la construction du conteneur ?
|
||||
### Construire son application au moment de la construction du conteneur ?
|
||||
|
||||
Comment faire lorsque l'on a besoin de compiler une application avant de
|
||||
l'intégrer dans le conteneur ?
|
||||
l'intégrer dans le conteneur ?
|
||||
|
||||
On peut vouloir lancer la compilation sur notre machine, mais cela ne sera pas
|
||||
très reproductible et cela aura nécessité d'installer le compilateur et les
|
||||
outils liés au langage que l'on souhaite compiler. Peut-être que plusieurs
|
||||
versions de ces outils existent, laquelle choisir ? ... Ok c'est trop
|
||||
versions de ces outils existent, laquelle choisir ? ... Ok c'est trop
|
||||
compliqué.
|
||||
|
||||
D'un autre côté, si l'on fait cela dans un conteneur, celui-ci contiendra dans
|
||||
|
@ -300,7 +301,7 @@ sélectionnera ainsi avec l'option `--target` l'un ou l'autre en fonction de
|
|||
l'environnement dans lequel on souhaite se déployer.
|
||||
|
||||
|
||||
### D'autres instructions ?
|
||||
### D'autres instructions ?
|
||||
|
||||
Consultez <https://docs.docker.com/engine/reference/builder/> pour la liste
|
||||
complète des instructions reconnues.
|
||||
|
@ -310,12 +311,12 @@ complète des instructions reconnues.
|
|||
|
||||
Pour mettre en application tout ce que nous venons de voir, réalisons le
|
||||
`Dockerfile` du service web [`youp0m`](https://you.p0m.fr/) que nous avons
|
||||
utilisé la semaine dernière.
|
||||
déjà utilisé précédemment.
|
||||
|
||||
Pour réaliser ce genre de contribution, on ajoute généralement un `Dockerfile`
|
||||
à la racine du dépôt.
|
||||
|
||||
Vous pouvez cloner le dépôt de sources de `youp0m` à :
|
||||
Vous pouvez cloner le dépôt de sources de `youp0m` à :\
|
||||
<https://git.nemunai.re/nemunaire/youp0m.git>
|
||||
|
||||
Pour compiler le projet, vous pouvez utiliser dans votre `Dockerfile`
|
||||
|
|
|
@ -37,7 +37,7 @@ Hello world
|
|||
</div>
|
||||
|
||||
Dans ce premier cas, il n'y a pas d'argument après le nom de l'image, c'est
|
||||
donc le contenu de `CMD`{.dockerfile} qui est utilisé ; il est donc passé en
|
||||
donc le contenu de `CMD`{.dockerfile} qui est utilisé ; il est donc passé en
|
||||
argument à l'`ENTRYPOINT`{.dockerfile}. Concrètement, la première ligne de
|
||||
commande exécutée est :
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ dépendances ont bien été enregistrée.
|
|||
Ce fichier fonctionne de la même manière que le `.gitignore` : vous pouvez
|
||||
utiliser du globing.
|
||||
|
||||
Pour plus d'informations, vous pouvez consulter la documentation accessible à
|
||||
<https://docs.docker.com/engine/reference/builder/#dockerignore-file>.
|
||||
Pour plus d'informations, vous pouvez consulter la documentation accessible à\
|
||||
<https://docs.docker.com/engine/reference/builder/#dockerignore-file>
|
||||
|
||||
|
||||
### N'installez rien de superflu
|
||||
|
@ -40,7 +40,7 @@ comme serveur web. Un autre conteneur pourra contenir cet éditeur de texte dans
|
|||
les cas où vous avez besoin de modifier des données.
|
||||
|
||||
En plus, cela réduira le temps de construction et la taille des images
|
||||
produites !
|
||||
produites !
|
||||
|
||||
Avec `apt` par exemple, vous pouvez ajouter l'option `--no-install-recommends`
|
||||
lors vous installer un paquet qui vient avec de nombreuses recommandations
|
||||
|
@ -64,7 +64,7 @@ place.
|
|||
|
||||
#### Allez à la ligne pour séparer les longues lignes de commandes complexes\
|
||||
|
||||
Aérez vos `Dockerfile` !
|
||||
Aérez vos `Dockerfile` !
|
||||
|
||||
N'hésitez pas à commenter et séparer les blocs logiques ensemble, comme lorsque
|
||||
vous codez.
|
||||
|
@ -176,7 +176,7 @@ CMD ["-g", "daemon", "off;"]
|
|||
|
||||
- Vous pouvez aussi utiliser un script qui servira à faire les initialisations
|
||||
ou les configurations nécessaire au bon fonctionnement du conteneur
|
||||
(rappelez-vous, il doit être éphémère !). Par exemple, le `Dockerfile` pour
|
||||
(rappelez-vous, il doit être éphémère !). Par exemple, le `Dockerfile` pour
|
||||
l'image de PostgreSQL possède cet entrypoint :
|
||||
|
||||
<div lang="en-US">
|
||||
|
|
|
@ -9,8 +9,8 @@ docker container run -it ubuntu /bin/bash
|
|||
```
|
||||
</div>
|
||||
|
||||
Nous voilà maintenant dans le conteneur ! Il est assez épuré, il n'y a rien de
|
||||
superflu : même pas d'éditeur de texte : ni vim, ni emacs, même pas `vi` !
|
||||
Nous voilà maintenant dans le conteneur ! Il est assez épuré, il n'y a rien de
|
||||
superflu : même pas d'éditeur de texte : ni vim, ni emacs, même pas `vi` !
|
||||
|
||||
La première chose à faire est de télécharger la liste des paquets. En effet,
|
||||
afin de ne pas livrer de superflu, la liste des paquets et son cache ne sont
|
||||
|
@ -69,7 +69,7 @@ doit servir de modèle. `my_nano` est le nom que vous voudrez utiliser
|
|||
|
||||
|
||||
Cette action va figer la couche la plus haute de systèmes de fichiers, qui
|
||||
était jusqu'alors en lecture-écriture pour le conteneur ; afin d'en faire la
|
||||
était jusqu'alors en lecture-écriture pour le conteneur ; afin d'en faire la
|
||||
dernière couche de notre nouvelle image.
|
||||
|
||||

|
||||
|
@ -83,10 +83,10 @@ docker container run -it my_nano /bin/bash
|
|||
</div>
|
||||
|
||||
Vous constatez cette fois que vous pouvez lancer `nano`, alors que vous ne
|
||||
pouvez toujours pas le faire dans un conteneur issu d'une image `ubuntu` !
|
||||
pouvez toujours pas le faire dans un conteneur issu d'une image `ubuntu` !
|
||||
|
||||
|
||||
### Scripté ?
|
||||
### Scripté ?
|
||||
|
||||
On peut automatiser les étapes ci-dessus avec un script qui ressemblerait à ça :
|
||||
|
||||
|
|
|
@ -32,9 +32,10 @@ vous pouvez l'installer comme ceci :
|
|||
|
||||
<div lang="en-US">
|
||||
```
|
||||
V="v0.6.3"
|
||||
mkdir -p ~/.docker/cli-plugins
|
||||
curl https://github.com/docker/buildx/releases/download/v0.6.3/buildx-v0.6.3.linux-amd64 \
|
||||
-L -s -S -o ~/.docker/cli-plugins/docker-buildx
|
||||
curl -L -s -S -o ~/.docker/cli-plugins/docker-buildx \
|
||||
https://github.com/docker/buildx/releases/download/$V/buildx-$V.linux-amd64
|
||||
chmod +x ~/.docker/cli-plugins/docker-buildx
|
||||
```
|
||||
</div>
|
||||
|
@ -52,7 +53,8 @@ docker buildx build .
|
|||
|
||||
Nous ne rentrerons pas plus dans les détails de cette nouvelle commande, mais
|
||||
sachez qu'on la retrouve particulièrement fréquemment dans les *GitHub
|
||||
Actions* : <https://github.com/marketplace/actions/docker-setup-buildx>
|
||||
Actions* :\
|
||||
<https://github.com/marketplace/actions/docker-setup-buildx>
|
||||
|
||||
|
||||
#### Changer la syntaxe de nos `Dockerfile`\
|
||||
|
@ -108,7 +110,7 @@ La version habituelle de la syntaxe des `Dockerfile` est la version 1.1. En
|
|||
utilisant BuildKit, nous pouvons dès à présent passer à la version 1.2 (stable)
|
||||
ou 1.3 (expérimentale).
|
||||
|
||||
Les ajouts par rapport à la syntaxe usuelle sont répertoriés sur cette page :\
|
||||
Les ajouts par rapport à la syntaxe usuelle sont répertoriés sur cette page :\
|
||||
<https://hub.docker.com/r/docker/dockerfile>.
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ institute: EPITA
|
|||
date: Mercredi 16 octobre 2019
|
||||
abstract: |
|
||||
Durant ce deuxième TP, nous allons voir comment créer nos propres
|
||||
images !
|
||||
images !
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue