Make OCI part an introduction to subsiduaries sections
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
nemunaire 2022-12-17 23:12:17 +01:00
commit 394091338f
3 changed files with 96 additions and 34 deletions

View file

@ -1,12 +1,17 @@
\newpage
Registres
=========
Registres d'images
==================
Nous allons appréhender le fonctionnement d'un registre OCI, en essayant de
récupérer les couches de quelques images (Debian, Ubuntu, hello, ...) : dans un
premier temps en nous préoccupant simplement de la couche la plus basse (qui ne
contient pas de modification ou de suppression : chaque fichier est normal).
Regardons d'un peu plus près les registres d'images OCI. Ce sont eux qui
distribuent les images OCI et permettent à Docker de récupérer très facilement
de nouveaux services.
Dans les sections à venir, nous allons essayer de récupérer la configuration et
les couches de quelques images courantes (Debian, Ubuntu, `hello-world`, ...) :
dans un premier temps en nous préoccupant simplement de la couche la plus basse
(le système de baase). Puis nous verrons dans le chapitre suivant comment gérer
les autres couches.
## Authentification
@ -29,7 +34,7 @@ lang="en-US">`repository:hello-world:pull`</span>). Ce qui nous donne :
dépôt (*repository*).
<div lang="en-US">
```bash
```
42sh$ curl "https://auth.docker.io/token?service=registry.docker.io&" \
"scope=repository:library/hello-world:pull" | jq .
```
@ -79,9 +84,10 @@ curl -s \
```
</div>
Dans la liste des *manifests* retournés, nous devons récupérer son `digest`. Dans
tout l'écosystème OCI, les `digest` servent à la fois de chemin d'accès et de
somme de contrôle.
Parmi la liste des *manifests* retournés, nous devons récupérer le `digest`
correspondant au système qui correspond à votre architecture et notre
système. Dans tout l'écosystème OCI, les `digest` servent à la fois de chemin
d'accès et de somme de contrôle.
## Lecture du *manifest*
@ -100,17 +106,17 @@ curl -s \
</div>
Nous voici donc maintenant avec le *manifest* de notre image. Nous pouvons
constater qu'il n'a bien qu'une seule couche, ouf !
constater qu'il n'a bien qu'une seule couche. Ouf, ça va simplifier les
choses !
## Récupération de la configuration et de la première couche
Les deux éléments que l'on cherche à récupérer vont se trouver dans le
répertoire `blobs`, il ne s'agit en effet plus de *manifest*. Si les *manifests*
sont toujours stockés par le registre lui-même, les blobs peuvent être délégués
à un autre service, par exemple dans le cloud, chez Amazon S3, un CDN, etc.
Les deux éléments que l'on cherche maintenant à récupérer vont se trouver dans
le répertoire `blobs` de notre dépôt. Il ne s'agira plus de *manifest*, mais
bien des fichiers définitifs.
Pour récupérer la configuration de l'image :
Récupérons la configuration de l'image comme ceci :
<div lang="en-US">
```bash
@ -120,8 +126,16 @@ curl -s --location \
```
</div>
Remarquez l'usage de l'option `--location` de `curl` : si les *manifests* sont
toujours stockés par le registre lui-même, les *blobs* peuvent être délégués à
un autre service, par exemple dans le cloud, chez Amazon S3, un CDN, etc. Sans
l'option `--location`, notre `curl` va retourner une redirection vers une autre
adresse, celle qui contient effectivement la configuration. Il en sera de même
pour les fichiers stockant les couches.\
Enfin, armé du `digest` de notre couche, il ne nous reste plus qu'à la demander gentiment :
Enfin d'autre part, armé du `digest` de notre couche, il ne nous reste plus
qu'à la demander gentiment :
<div lang="en-US">
```bash