images chapter
This commit is contained in:
@@ -149,13 +149,77 @@ Docker -- fonctionnement
|
||||
# Images
|
||||
<!-- pr:column_layout: [1, 1] -->
|
||||
<!-- pr:column: 0 -->
|
||||
```bash +exec
|
||||
# lance moi avec ctrl+e
|
||||
# reset avec ctrl+r
|
||||
docker image pull grycap/cowsay:latest
|
||||
```
|
||||
Comme vu précédement, l'utilité de docker est de pouvoir créer et lancé des conteneurs
|
||||
isolé du système et qui agissent comme des mini ordinateurs. Mais pour cela,
|
||||
ils faut que le conteneur puisse savoir quoi lancé, de quels applications il à besoin
|
||||
pour fonctionner, et sur quel distribution[^8] se baser.
|
||||
C'est l'utilité de l'**image docker**[^1], cette dernière sert en quelque sorte à
|
||||
définir les *ingrédients* dont notre conteneur vas avoir besoin pour se lancer
|
||||
correctement, contrairement au nom (et à mon schéma) peut laisser entendre, elle
|
||||
n'a rien d'une image au sens graphique du terme. En réalité, c'est plus quelque
|
||||
chose d'analog à un *fichier .zip* (ou .rar, ou .tar, ou .7zip, ou... bon vous
|
||||
avez l'idée...).
|
||||
Cette image est composée de **layers**[^9] (ou couches en bon français), qui
|
||||
identifient et composent chaque élément de l'image. Cela permet à Docker de
|
||||
dédupliquer différents morceaux des images que l'on téléchargent.
|
||||
Ainsi, si l'on télécharge deux images qui ont besoin de *nginx* par exemple,
|
||||
ces deux images vont partager un layer similaire, et ce layer n'aura besoin d'être
|
||||
télécharger qu'une seul fois.
|
||||
## nom des images
|
||||
En règle générale, chaque image vas correspondre à un service, par exemple si
|
||||
veut lancer une *base de donnée mysql*, je vais utiliser une image nommée... *mysql*,
|
||||
pour un *serveur web nginx*, une image nommée... *nginx*, et si je veut un interpréteur
|
||||
python... *python*.
|
||||
## où trouver des images
|
||||
Bon maintenant on sais à quoi ça sert, où est ce que je peut trouver quel nom d'image
|
||||
utiliser et si une image existe pour le service que je cherche ? Par exemple, mettons
|
||||
que je souhaite une image docker de *node* ?
|
||||
La manière la plus simple est de chercher sur [**dockerhub**[^10]](https://hub.docker.com/)
|
||||
En reprenant notre exemple, si je cherche **node**, je tombe sur cette [page](https://hub.docker.com/_/node),
|
||||
qui est une image officielle de docker, et donc subceptible d'être de bonne qualité,
|
||||
avec une documentation fiable et à jour.
|
||||
<!-- pr:column: 1 -->
|
||||

|
||||
<!-- pr:end_slide -->
|
||||
Docker -- fonctionnement
|
||||
===
|
||||
# Images
|
||||
## tag d'images
|
||||
<!-- pr:column_layout: [2,1] -->
|
||||
<!-- pr: column: 0 -->
|
||||
Maintenant, disons que l'on souhaite précisément la version 22 de node pour notre
|
||||
projet. On pourais chercher une image qui nous donne précisément cette version,
|
||||
mais généralement les images sont versionnée par ce qu'on appelle des *tags*,
|
||||
ils servent à spécifié une version précise d'une image, généralement construite
|
||||
avec des petites différences, que ce sois une version plus ancienne, ou une version
|
||||
spécifique.
|
||||
Comment on spécificie en tag vous dites, tel le lecteur anthousiaste que vous êtes ?
|
||||
Eh bien la syntaxe est asser simple, on spécifie le nom de notr eimage comme
|
||||
d'habitude, suivis de deux points puis notre tag: `node:<tag>`. Mais ducoup, Comment
|
||||
savoir quoi mettre comme taf, redemendez vous d'une vois fébrile et avide de savoir,
|
||||
à moins que ce ne sois que les premiers symptômes de la schyzophrénie qui me frappent...
|
||||
C'est simple... Il suffit de regarder sur la page de documentation de [l'image en
|
||||
question](https://hub.docker.com/_/node), dans les premières lignes, on trouvera
|
||||
généralement une liste des tags les plus courant, et en lisant plus en profondeur
|
||||
sur la documentation, on trouvera plus de détails sur l'utilisation de ces derniers.
|
||||
Ainsi, au châpitre [Image Variant](https://hub.docker.com/_/node#image-variants),
|
||||
on trouve le paragraphe suivant:
|
||||
<!-- pr:column: 1 -->
|
||||

|
||||
<!-- pr:reset_layout -->
|
||||
> The node images come in many flavors, each designed for a specific use case.
|
||||
>
|
||||
> node:\<version\>
|
||||
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
|
||||
|
||||
On peut y lire (en anglais dans le texte), qu'on peut utiliser le la syntaxe `node:<version>`
|
||||
pour récupérer une version précise de node, ainsi, avec `node:22`, on vas récupérer
|
||||
une image avec la version 22 de node.
|
||||
<!-- pr:end_slide -->
|
||||
Docker -- fonctionnement
|
||||
===
|
||||
# Commandes
|
||||
|
||||
<!-- pr:end_slide -->
|
||||
Docker -- fonctionnement
|
||||
===
|
||||
@@ -179,4 +243,7 @@ Docker -- fonctionnement
|
||||
[^4]: java:
|
||||
[^5]: Conteneur OCI:
|
||||
[^6]: docker networks:
|
||||
[^7]: docker volumes:
|
||||
[^7]: docker volumes:
|
||||
[^8]: Distribution linux:
|
||||
[^9]: layer d'image (docker):
|
||||
[^10]: Dockerhub:
|
||||
|
||||
Reference in New Issue
Block a user