images chapter
This commit is contained in:
@@ -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 -->
|
||||||

|

|
||||||
|
<!-- 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 -->
|
<!-- 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
BIN
docker/pictures/rtfm.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
Reference in New Issue
Block a user