2020 done

This commit is contained in:
nemunaire 2020-09-14 15:46:13 +02:00
commit a75f4b43b7
25 changed files with 113 additions and 2498 deletions

View file

@ -1,3 +1,5 @@
\newpage
Registres
=========
@ -17,11 +19,10 @@ L'authentification est facultative et est laissée à l'appréciation du
fournisseur de service. Étant donné que nous allons utiliser le [Docker
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 doivent être effectuées 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 !
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 !
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
@ -34,7 +35,7 @@ souhaite récupérer le contenu du dépôt[^quiddepot] `hello-world` :
<div lang="en-US">
```bash
42sh$ curl "https://auth.docker.io/token?service=registry.docker.io&"\
> "scope=repository:library/hello-world:pull" | jq .
"scope=repository:library/hello-world:pull" | jq .
```
```json
{
@ -57,6 +58,12 @@ Avec `jq`, on peut l'extraire grâce à :
```
</div>
**Attention :** 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
particulière à `Www-Authenticate`.
## Lecture de l'index d'images
@ -98,7 +105,9 @@ constater qu'il n'a bien qu'une seule couche, ouf !
## 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.
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.
Pour récupérer la configuration de l'image :
@ -153,7 +162,7 @@ Réalisez un script pour automatiser l'ensemble de ces étapes :
```bash
42sh$ cd $(mktemp)
42sh$ ~/workspace/registry_play.sh library/hello-world
42sh$ ~/workspace/registry_play.sh library/hello-world:latest
42sh$ find
.
@ -165,3 +174,6 @@ Hello from Docker!
[...]
```
</div>
Pensez également à tester avec d'autres images, comme par exemple
`nemunaire/youp0m`. Il vous faudra alors extraire plusieurs couches.