diff --git a/_posts/2023-04-06-un-registre-statique-docker-avec-garage.md b/_posts/2023-04-06-un-registre-statique-docker-avec-garage.md index 035ba82..31b56d9 100644 --- a/_posts/2023-04-06-un-registre-statique-docker-avec-garage.md +++ b/_posts/2023-04-06-un-registre-statique-docker-avec-garage.md @@ -210,7 +210,7 @@ Maintenant on va reconstituer cette image dans notre registre à la main. On cop ```bash cd /tmp/garae-img-multi -aws s3 cp --content-type application/vnd.docker.distribution.manifest.v2+json \ +aws s3 cp --content-type application/vnd.docker.distribution.manifest.list.v2+json \ manifest.json \ s3://quentin.dufour.io/v2/garage/manifests/v0.8.2 ``` @@ -220,24 +220,73 @@ Il faut aussi que le manifest soit accessible depuis son hash sha256, pour ça i ```text $ sha256 manifest.json SHA256 (manifest.json) = 91af689013dd80d2ef0f4ff75038bc738b3193a11e201530d6da0fa833f55cbb +$ aws s3 cp --content-type application/vnd.docker.distribution.manifest.list.v2+json \ + manifest.json \ + s3://quentin.dufour.io/v2/garage/manifests/sha256:91af689013dd80d2ef0f4ff75038bc738b3193a11e201530d6da0fa833f55cbb ``` -Ensuite on copie les manifestes des images des différentes architectures (ici `linux/arm`, `linux/arm64`, `linux/amd64, et linux/386` : +Ensuite on copie les manifestes des images des différentes architectures (ici `linux/arm`, `linux/arm64`, `linux/amd64, et linux/386`) : ```bash -undefined +# manifest arm +aws s3 cp --content-type application/vnd.docker.distribution.manifest.v2+json \ + 12ec13fe92959249c52c46e97754333267ceeea22978434737978a135b7185ce.manifest.json \ + s3://quentin.dufour.io/v2/garage/manifests/sha256:12ec13fe92959249c52c46e97754333267ceeea22978434737978a135b7185ce + +# manifest arm64 +aws s3 cp --content-type application/vnd.docker.distribution.manifest.v2+json \ + 236604ea7a441f907d52129d9490fe96b64ef2efd8d4b1c1c50ef8dbae361a8e.manifest.json \ + s3://quentin.dufour.io/v2/garage/manifests/sha256:236604ea7a441f907d52129d9490fe96b64ef2efd8d4b1c1c50ef8dbae361a8e + +# manifest 386 +aws s3 cp --content-type application/vnd.docker.distribution.manifest.v2+json \ + 47df19e0c6333356e503258e6301c3a91848644667a0b7de4162e6841e89769a.manifest.json \ + s3://quentin.dufour.io/v2/garage/manifests/sha256:47df19e0c6333356e503258e6301c3a91848644667a0b7de4162e6841e89769a + +# manifest amd64 +aws s3 cp --content-type application/vnd.docker.distribution.manifest.v2+json \ + 73a20980fd232dc7acd51d21df6c7c9964bc7c5fbcfdc098b95cfd221bf67bf6.manifest.json \ + s3://quentin.dufour.io/v2/garage/manifests/sha256:73a20980fd232dc7acd51d21df6c7c9964bc7c5fbcfdc098b95cfd221bf67bf6 ``` -Enfin, on copie les blobs, qui contiennent par exemple les layers de chaque images : +Enfin, on copie les blobs, qui contiennent par exemple les layers de chaque images. Plutôt que de copier à la main, cette fois-ci je fais une boucle : ```bash -undefined +for i in $(ls | grep -P '^[a-f0-9]+$'); do + aws s3 cp $i "s3://quentin.dufour.io/v2/garage/blobs/sha256:$i" +done ``` -aa +Et voilà ! ## Tester notre registre +On peut d'abord essayer avec skopeo la même commande qu'on a exécuté sur le Docker Hub pour dump toutes nos images : + +```bash +skopeo --insecure-policy copy \ + --all --format v2s2 --dest-compress + docker://quentin.dufour.io/garage:v0.8.2 + dir:/tmp/garage-s3-registry +``` + +Et puis, plus simplement, avec Docker directement : + +```bash +docker pull quentin.dufour.io/garage:v0.8.2 +``` + +Et pourquoi pas tenter même de lancer notre conteneur ? + +```bash +$ sudo docker run --rm -it quentin.dufour.io/garage:v0.8.2 /garage help +garage v0.8.2 [features: k2v, sled, lmdb, sqlite, consul-discovery, kubernetes-discovery, metrics, telemetry-otlp, bundled-libs] +S3-compatible object store for self-hosted geo-distributed deployments +... +``` + +Nous y voilà : nous savons créer un registre Docker statique ! Et maintenant, pourquoi ne pas construire nos images directement avec Nix ? + ## Construire l'image nous-même avec Nix