Registre de conteneurs (Docker / OCI)¶
Poussez et récupérez des images de conteneurs avec le CLI Docker standard — aucun plugin, aucun client personnalisé. Chaque image passe par le même pipeline antivirus et CVE que vos autres formats de paquets avant de devenir servable.
Prérequis¶
- Le serveur de dépôt Repod est démarré et accessible depuis la machine cliente
- Votre compte a le rôle
uploader,maintainerouadminpour pousser une image ; tout compte authentifié (ou, pour un dépôt ouvert, non authentifié) peut la récupérer - Pour tout ce qui dépasse un test local : TLS configuré
(
docker-compose.tls.yml) — le CLI Docker refuse par défaut de parler à un registre en HTTP simple
Étape 1 — Se connecter¶
Utilisez votre mot de passe de compte Repod habituel, ou un jeton API
(repod_...) pour la CI/CD — les mêmes identifiants que pour tout autre
point de terminaison authentifié. Repod émet en coulisses un jeton bearer
signé à courte durée de vie, via le protocole standard OCI Distribution
Bearer Token (le même qu'utilisent Docker Hub et GHCR) — le CLI Docker gère
cette négociation automatiquement, rien à configurer.
Comptes SaaS — préfixez votre nom d'utilisateur avec votre organisation
Sur Repod SaaS, le registre de conteneurs est une adresse unique
partagée par toutes les organisations (il n'existe pas de sous-domaine
par organisation pour docker login comme pour le reste de
l'application) — l'organisation doit donc voyager dans le nom
d'utilisateur :
+, pas : — l'authentification HTTP Basic utilise elle-même
: pour séparer le nom d'utilisateur du mot de passe, donc un : à
l'intérieur du nom d'utilisateur serait absorbé dans le mot de passe
au lieu d'atteindre Repod. Vos images vivent ensuite dans l'espace de
noms propre à votre organisation — voir l'étape de push ci-dessous.
Ceci ne s'applique qu'au SaaS ; les déploiements on-premise/CE
utilisent un nom d'utilisateur simple comme montré ci-dessus.
Test local / dev sans TLS
Si vous n'avez pas encore configuré TLS, ajoutez votre hôte à la liste des registres non sécurisés de Docker plutôt que de lutter contre l'exigence HTTPS du client :
Redémarrez le démon Docker après avoir modifié ce fichier. Utilisez un vrai certificat TLS avant de pousser quoi que ce soit d'important — voir Reverse proxy.Étape 2 — Pousser une image¶
Le dépôt (my-app ci-dessus) est créé automatiquement au premier push
réussi — aucun pré-enregistrement nécessaire, le même modèle de dépôt
dynamique qu'utilisent Maven, PyPI et npm.
Comptes SaaS — préfixez le nom de l'image avec votre organisation
docker tag my-app:1.0.0 YOUR_HOST:5443/YOUR_ORG_SLUG/my-app:1.0.0
docker push YOUR_HOST:5443/YOUR_ORG_SLUG/my-app:1.0.0
docker push ghcr.io/your-org/my-app).
Derrière le push, Repod scanne chaque couche avec le même pipeline
antivirus + CVE utilisé pour les paquets .deb/.rpm/.apk. Selon votre
politique CVE, une image est soit publiée immédiatement, soit atterrit dans
la même file de revue déjà utilisée par votre équipe sécurité pour les
paquets OS — voir
Pipeline de sécurité.
Étape 3 — Récupérer une image¶
Si le dépôt est ouvert (comportement par défaut), aucune connexion n'est requise pour récupérer l'image. S'il a été restreint (voir ci-dessous), la récupération nécessite les mêmes identifiants que le push.
Importer une image publique¶
Vous n'avez pas besoin de construire localement pour faire entrer une image dans Repod. Depuis l'interface web (Registre de conteneurs → Importateur) ou l'API, pointez Repod vers une image Docker Hub publique et un tag — il télécharge l'image, la fait passer par le même pipeline antivirus + CVE, et la publie (ou la met en file de revue) sans jamais toucher votre démon Docker local.
Contrôle d'accès¶
Par défaut, tout nom de dépôt est ouvert au push pour les comptes
uploader/maintainer/admin, et ouvert à la récupération pour tout le monde.
Pour restreindre un dépôt spécifique à certains rôles ou groupes, utilisez
le point de terminaison de contrôle d'accès aux dépôts (admin uniquement)
— le même modèle utilisé dans tous les formats de Repod : aucune ligne
signifie ouvert, admin contourne toujours la restriction, et un refus en
lecture renvoie 404 plutôt que 403 afin que l'existence d'un dépôt
restreint ne soit pas révélée à quelqu'un qui n'y a pas accès.