images chapter

This commit is contained in:
Awen Lelu
2025-12-28 16:11:40 +01:00
parent f6c75d185c
commit d18c9de3d7
2 changed files with 73 additions and 6 deletions

View File

@@ -149,13 +149,77 @@ Docker -- fonctionnement
# Images # Images
<!-- pr:column_layout: [1, 1] --> <!-- pr:column_layout: [1, 1] -->
<!-- pr:column: 0 --> <!-- pr:column: 0 -->
```bash +exec Comme vu précédement, l'utilité de docker est de pouvoir créer et lancé des conteneurs
# lance moi avec ctrl+e isolé du système et qui agissent comme des mini ordinateurs. Mais pour cela,
# reset avec ctrl+r ils faut que le conteneur puisse savoir quoi lancé, de quels applications il à besoin
docker image pull grycap/cowsay:latest 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:column: 1 -->
![](./pictures/gateau.png) ![](./pictures/gateau.png)
<!-- 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 -->
![rtfm](./pictures/rtfm.jpg)
<!-- 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 --> <!-- pr:end_slide -->
Docker -- fonctionnement Docker -- fonctionnement
=== ===
@@ -180,3 +244,6 @@ Docker -- fonctionnement
[^5]: Conteneur OCI: [^5]: Conteneur OCI:
[^6]: docker networks: [^6]: docker networks:
[^7]: docker volumes: [^7]: docker volumes:
[^8]: Distribution linux:
[^9]: layer d'image (docker):
[^10]: Dockerhub:

BIN
docker/pictures/rtfm.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB