Utiliser S3 comme registre de conteneurs
- Au cours des 4 derniers mois, l’auteur a collaboré avec Outerbounds pour développer un constructeur d’images de conteneurs personnalisé
- Il a découvert qu’il était possible d’utiliser S3 comme registre de conteneurs
- En exposant un bucket S3 en HTTP et en téléversant une image vers un chemin précis, il est possible de récupérer l’image avec la commande
docker pull
Démo
- Une image de conteneur exécutant
cowsay a été créée puis téléversée dans un bucket S3
- R2 est utilisé pour fournir un egress gratuit
- R2 et S3 sont compatibles au niveau de l’API
$ docker run --rm pub-40af5d7df1e0402d9a92b982a6599860.r2.dev/cowsay
Pourquoi utiliser S3 ?
- Traditionnellement, on utilise DockerHub, GitHub Container Registry, ECR, etc.
- S3 offre un avantage important en matière de vitesse d’upload
- La comparaison des vitesses d’upload entre ECR et S3 montre que S3 peut être jusqu’à 8 fois plus rapide
Pourquoi S3 est plus rapide
- S3 permet de téléverser en parallèle les chunks d’une même couche
- ECR, en respectant l’OCI Distribution Spec, doit effectuer les uploads de manière séquentielle
- Comme ECR ne permet pas l’upload parallèle, il n’exploite pas pleinement la bande passante disponible
S3 n’est pas un registre de conteneurs
- À proprement parler, S3 n’est pas un registre de conteneurs
- La commande
docker pull télécharge des fichiers via des requêtes HTTP
- En configurant correctement un bucket S3, il est possible de l’utiliser comme registre de conteneurs
Points d’attention
- Cette méthode est très expérimentale
- Elle ne fournit pas les fonctionnalités des registres de conteneurs classiques (par ex. analyse de sécurité, contrôle d’accès, etc.)
- Des recherches supplémentaires sont nécessaires
PS. Et la baleine ?
- C’est une plaisanterie qui renvoie au logo de Docker
Le résumé de GN⁺
- Cet article explique comment utiliser S3 comme registre de conteneurs
- Il permet de tirer parti de la vitesse d’upload élevée de S3
- Comme il ne fournit pas les fonctionnalités des registres de conteneurs classiques, il faut l’utiliser avec prudence
- L’approche est expérimentale, mais intéressante
- Parmi les autres projets offrant des fonctions similaires, on trouve DockerHub, GitHub Container Registry et ECR
1 commentaires
Avis Hacker News
Certains estiment qu’il serait souhaitable que la spécification OCI Distribution prenne en charge les fichiers statiques
Content-Type: octet-streampourrait très bien fonctionnerCertains estiment que la spécification OCI Distribution est mal conçue
Content-Rangene correspond pas au format RFC7233Il est mentionné que Cloudflare a open source un serveur de registre de conteneurs utilisant R2
Certains veulent savoir pourquoi, dans la spécification OCI, le push des couches doit être séquentiel
Avis sur les raisons d’utiliser Nexus ainsi que sur ses avantages et inconvénients
Il est indiqué que Distribution de la CNCF prend en charge la sauvegarde du registre depuis S3 via des URL signées Cloudfront
Certains regrettent qu’il n’y ait aucune mention des coûts de S3 et de R2
Il est indiqué qu’ECR prend en charge l’upload des couches d’image en plusieurs parties
Il y a des critiques à propos du Registry de Docker
Certains disent ne pas comprendre l’intérêt d’un registre de conteneurs privé