diff --git a/docker/docker.md b/docker/docker.md index 89ccc55..acbe441 100644 --- a/docker/docker.md +++ b/docker/docker.md @@ -149,13 +149,77 @@ Docker -- fonctionnement # Images -```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. ![](./pictures/gateau.png) + +Docker -- fonctionnement +=== +# Images +## tag d'images + + +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:`. 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: + +![rtfm](./pictures/rtfm.jpg) + +> The node images come in many flavors, each designed for a specific use case. +> +> node:\ +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:` +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. + +Docker -- fonctionnement +=== +# Commandes + 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: diff --git a/docker/pictures/rtfm.jpg b/docker/pictures/rtfm.jpg new file mode 100644 index 0000000..743302e Binary files /dev/null and b/docker/pictures/rtfm.jpg differ