Save tuto corrections
This commit is contained in:
parent
f5ee6b8534
commit
10448a6c8d
115 changed files with 1423 additions and 1289 deletions
|
|
@ -21,13 +21,13 @@ Hub](https://hub.docker.com/), le registre par défaut de `docker`, nous allons
|
|||
devoir nous plier à leur mécanisme d'authentification : chaque requête au
|
||||
registre doit être effectuée avec un jeton, que l'on obtient en s'authentifiant
|
||||
auprès d'un service dédié. Ce service peut délivrer un jeton sans authentifier
|
||||
l'interlocuteur, en restant anonyme ; dans ce cas, on ne pourra accéder qu'aux
|
||||
images publiques. Ça tombe bien, c'est ce qui nous intéresse aujourd'hui !
|
||||
l'interlocuteur, en restant anonyme ; dans ce cas, on ne pourra accéder qu'aux
|
||||
images publiques. Ça tombe bien, c'est ce qui nous intéresse aujourd'hui !
|
||||
|
||||
Il n'en reste pas moins que le jeton est forgé pour un service donné (dans
|
||||
notre cas `registry.docker.io`) et avec un objectif bien cerné (pour nous, on
|
||||
souhaite récupérer le contenu du dépôt[^quiddepot] `hello-world` :
|
||||
<span lang="en-US">`repository:hello-world:pull`</span>). Ce qui nous donne :
|
||||
Il n'en reste pas moins que le jeton est forgé pour un service donné (ici
|
||||
`registry.docker.io`) et avec un objectif bien cerné (pour nous, on souhaite
|
||||
récupérer le contenu du dépôt[^quiddepot] `hello-world` : <span
|
||||
lang="en-US">`repository:hello-world:pull`</span>). Ce qui nous donne :
|
||||
|
||||
[^quiddepot]: Dans un registre, les fichiers qui composent l'image forment un
|
||||
dépôt (*repository*).
|
||||
|
|
@ -58,7 +58,11 @@ Avec `jq`, on peut l'extraire grâce à :
|
|||
```
|
||||
</div>
|
||||
|
||||
**Attention :** le token expire ! Pensez à le renouveler régulièrement.
|
||||
::::: {.warning}
|
||||
|
||||
Le token expire ! Pensez à le renouveler régulièrement.
|
||||
|
||||
:::::
|
||||
|
||||
En cas d'erreur inexplicable, vous pouvez ajouter un `-v` à la ligne de
|
||||
commande `curl`, afin d'afficher les en-têtes. Prêtez une attention toute
|
||||
|
|
@ -94,12 +98,12 @@ système d'exploitation :
|
|||
curl -s \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
-H "Accept: ${MEDIATYPE}" \
|
||||
"https://registry-1.docker.io/v2/library/hello-world/manifests/${MANIFEST_DIGEST}" | jq .
|
||||
"https://registry-1.docker.io/v2/library/hello-world/manifests/${MNFST_DGST}"
|
||||
```
|
||||
</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 !
|
||||
|
||||
|
||||
## Récupération de la configuration et de la première couche
|
||||
|
|
@ -115,7 +119,7 @@ Pour récupérer la configuration de l'image :
|
|||
```bash
|
||||
curl -s --location \
|
||||
-H "Authorization: Bearer ${TOKEN}" \
|
||||
"https://registry-1.docker.io/v2/library/hello-world/blobs/${CONFIG_DIGEST}" | jq .
|
||||
"https://registry-1.docker.io/v2/library/hello-world/blobs/${CONFIG_DIGEST}"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
@ -132,9 +136,11 @@ wget --header "Authorization: Bearer ${TOKEN}" \
|
|||
|
||||
## Extraction
|
||||
|
||||
Le type indiqué par le manifest pour cette couche était
|
||||
`application/vnd.docker.image.rootfs.diff.tar.gzip`, il s'agit donc d'une
|
||||
tarball compressée au format gzip :
|
||||
Le type indiqué par le manifest pour cette couche était :
|
||||
|
||||
application/vnd.docker.image.rootfs.diff.tar.gzip
|
||||
|
||||
Il s'agit donc d'une tarball compressée au format gzip :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -179,7 +185,7 @@ Pensez également à tester avec d'autres images, comme par exemple
|
|||
`nemunaire/youp0m`. Il vous faudra alors extraire plusieurs couches.
|
||||
|
||||
Pour gérer les différentes couches, vous pouvez utiliser une stratégie
|
||||
similaire au driver `vfs` : en extrayant chaque tarball l'une au dessus de
|
||||
similaire au driver `vfs` : en extrayant chaque tarball l'une au dessus de
|
||||
l'autre, en essayant de gérer les *whiteout files*. Ou bien en suivant le
|
||||
driver `overlayfs`, en montant un système de fichier à chaque couche (dans ce
|
||||
cas, votre script devra être lancé en `root`).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue